Blogger Information
Blog 52
fans 1
comment 1
visits 38630
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Vue常用指令及方法
小丑0o鱼
Original
510 people have browsed it
  1. v-bind:指令,动态地绑定一个或多个特性,或一个组件 prop 到表达式.在绑定classstyle特性时,支持其它类型的值,如数组或对象。高频指令,缩写为:
  2. <style>
  3. .active {
  4. width: 200px;
  5. height: 100px;
  6. }
  7. </style>
  8. </head>
  9. <body>
  10. <div class="app">
  11. <!-- v-bind,动态绑定属性 -->
  12. <p v-text="hello" v-bind:style="styRed" :class="activeClass"></p>
  13. </div>
  14. <script>
  15. new Vue({
  16. el: ".app",
  17. data() {
  18. return {
  19. hello: "Hello World",
  20. styRed: { color: "red", background: "green" },
  21. activeClass: 'active',
  22. }
  23. },
  24. })
  25. </script>
  26. </body>
  27. v-show:指令,用于根据表达式之真假值展示元素.带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS property display
  28. <body>
  29. <div class="show">
  30. <p v-show="flag">图片</p>
  31. <button v-text="msg" v-on:click="handle"></button>
  32. </div>
  33. <script>
  34. new Vue({
  35. el: ".show",
  36. data() {
  37. return {
  38. flag: "true",
  39. msg: "隐藏",
  40. }
  41. },
  42. methods: {
  43. handle() {
  44. this.flag = !this.flag;
  45. this.msg = this.flag ? "隐藏" : "显示";
  46. },
  47. },
  48. });
  49. </script>
  50. v-on: 指令,添加一个事件监听器,通过它调用在 Vue 实例中定义的方法.高频指令,缩写为@ .
  51. 事件修饰符.prevent - 修饰符告诉 v-on 指令对于触发的事件调用event.preventDefault();.stop - 阻止事件的冒泡;.self - 只当事件是从侦听器绑定的元素本身触发时才触发回调
  52. 按键修饰符 KeyboardEvent.key,如监控回车.keyup.enter
  53. 事件中回调传参使用$event
  54. <body>
  55. <div class="app">
  56. <p :style='pStyle' @click='pClick($event)'>
  57. <!-- 修饰符可串联,preventa标签跳转,stop禁冒泡 -->
  58. <a :href="url" v-text="urlText" v-on:click.prevent.stop="handle"></a>
  59. </p>
  60. </div>
  61. <script>
  62. new Vue({
  63. el: ".app",
  64. data() {
  65. return {
  66. pStyle: { height: "50px", width: "100px", backgroundColor: "green" },
  67. url: "http://php.cn",
  68. urlText: "php中文网",
  69. }
  70. },
  71. methods: {
  72. // p元素事件
  73. pClick($event) {
  74. console.log($event);
  75. },
  76. // a元素事件
  77. handle() {
  78. console.log('未满18周年,禁入');
  79. }
  80. },
  81. })
  82. </script>
  83. </body>
  84. v-if:指令,用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染。
  85. v-else-if:指令,充当 v-if 的“else-if 块”,可以连续使用,必须紧跟在带 v-if 或者 v-else-if 的元素之后
  86. v-else:指令,来表示 v-if 的“else 块”,必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别
  87. <body>
  88. <div class="app">
  89. <p v-if="score >= 90" v-text="msg[0]"></p>
  90. <p v-else-if="score >= 70 && score < 90" v-text="msg[1]"></p>
  91. <p v-else-if="score >= 60 && score < 70" v-text="msg[2]"></p>
  92. <p v-else v-text="msg[3]"></p>
  93. </div>
  94. <script>
  95. new Vue({
  96. el: ".app",
  97. data() {
  98. return {
  99. score: 30,
  100. msg: ["优秀", "良好", "及格", "不及格"],
  101. }
  102. },
  103. })
  104. </script>
  105. </body>
  106. v-for:指令,基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名。v-for 还支持一个可选的第二个参数,即当前项的索引。v-for必须配合key来使用.
  107. 语法:v-for:”(item,index) in/of items :key=”index
  108. v-for 也可以来遍历一个对象,对象一般使用键名做key.
  109. 语法:v-for:”(val,name,index) in/of object :key=”name
  110. <body>
  111. <div class="app">
  112. <ul>
  113. <!-- 遍历数组 -->
  114. <li v-for="(item, index) in citys" :key="index" v-text="item"></li>
  115. </ul>
  116. <ul>
  117. <!-- 遍历对象 -->
  118. <li v-for="(val, name, index) in user" :key="name" v-text="`${name}:${val}`"></li>
  119. </ul>
  120. <!-- 遍历对象数组 -->
  121. <ul v-for="(user, index) in users" :key="index">
  122. <li v-for="(val, name, index) in user" :key="name" v-text="`${name}:${val}`"></li>
  123. </ul>
  124. </div>
  125. <script>
  126. new Vue({
  127. el: '.app',
  128. data() {
  129. return {
  130. // 数组
  131. citys: ['北京', '上海', '天津', '重庆'],
  132. // 对象
  133. user: { name: '张三', gender: '男', age: '20', email: 'zs@qq.com' },
  134. // 对象数组
  135. users: [
  136. { id: 1, name: '张三', gender: '男', age: '20', email: 'zs@qq.com' },
  137. { id: 2, name: '李四', gender: '男', age: '30', email: 'ls@qq.com' },
  138. { id: 3, name: '王五', gender: '男', age: '40', email: 'ww@qq.com' },
  139. ]
  140. }
  141. },
  142. })
  143. </script>
  144. </body>
  145. v-model:指令,它能轻松实现表单输入和应用状态之间的双向绑定.在表单元素外使用不起作用
  146. 修饰符.lazy - 等同input change事件;.number - 输入字符串转为有效的数字trim - 过滤输入首尾空格
  147. <body>
  148. <div class="app">
  149. <p v-text="`模型中的数据:${something}`"></p>
  150. <!-- 双向绑定 -->
  151. <input type="text" v-model="something">
  152. <!-- 延迟双向绑定 -->
  153. <input type="text" v-model.lazy="something">
  154. </div>
  155. <script>
  156. new Vue({
  157. el: '.app',
  158. data() {
  159. return {
  160. something: 0,
  161. }
  162. },
  163. })
  164. </script>
  165. </body>
  166. 计算属性:computed.计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。每个计算属性都包含两个setget 属性
  167. <body>
  168. <div class="app">
  169. <input type="number" min="0" max="100" v-model="num">
  170. <p>单价:{{price}}</p>
  171. <p>总额:{{mount}}</p>
  172. </div>
  173. <script>
  174. const ve = new Vue({
  175. el: '.app',
  176. data() {
  177. return {
  178. price: 50,
  179. num: 0,
  180. }
  181. },
  182. computed: {
  183. mount: {
  184. get() {
  185. return this.price * this.num;
  186. },
  187. set(val) {
  188. if (val > 1000) {
  189. this.price = 40;
  190. }
  191. },
  192. }
  193. },
  194. });
  195. </script>
  196. </body>
  197. 侦听器属性:watch.当需要在数据变化时执行异步或开销较大的操作时,通过watch方法,来响应数据的变化。watch中的属性方法名要与data中的数据名相同.侦听器属性和计算属性在大多数可以替代,区别:computed 是基于data中数据进行处理的,data数据变化,他也跟着变化当data中数据没有发生改变时,我们调用computed中函数n次,只会进行缓存(执行一次),watch类似于监听机制+事件机制.
  198. <body>
  199. <div class="app">
  200. <input type="number" min="0" max="100" v-model="num">
  201. <p>单价:{{price}}</p>
  202. <p>总额:{{mount}}</p>
  203. </div>
  204. <script>
  205. const ve = new Vue({
  206. el: '.app',
  207. data() {
  208. return {
  209. price: 50,
  210. mount: 0,
  211. num: 0,
  212. }
  213. },
  214. watch: {
  215. num(newVal, oldVal) {
  216. this.mount = newVal * this.price;
  217. }
  218. }
  219. });
  220. </script>
  221. </body>
Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!