博客列表 >Vue常用指令及方法

Vue常用指令及方法

小丑0o鱼
小丑0o鱼原创
2021年07月20日 19:23:41515浏览
  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>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议