博客列表 >0415作业-Vue常用指令及方法

0415作业-Vue常用指令及方法

千山暮雪
千山暮雪原创
2021年04月20日 23:54:37562浏览
  • v-bind:指令,动态地绑定一个或多个特性,或一个组件 prop 到表达式.在绑定class或style特性时,支持其它类型的值,如数组或对象。高频指令,缩写为:
  1. <style>
  2. .active {
  3. width: 200px;
  4. height: 100px;
  5. }
  6. </style>
  7. </head>
  8. <body>
  9. <div class="app">
  10. <!-- v-bind,动态绑定属性 -->
  11. <p v-text="hello" v-bind:style="styRed" :class="activeClass"></p>
  12. </div>
  13. <script>
  14. new Vue({
  15. el: ".app",
  16. data() {
  17. return {
  18. hello: "Hello World",
  19. styRed: { color: "red", background: "green" },
  20. activeClass: 'active',
  21. }
  22. },
  23. })
  24. </script>
  25. </body>
  • v-show:指令,用于根据表达式之真假值展示元素.带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS property display。

  1. <body>
  2. <div class="show">
  3. <p v-show="flag">图片</p>
  4. <button v-text="msg" v-on:click="handle"></button>
  5. </div>
  6. <script>
  7. new Vue({
  8. el: ".show",
  9. data() {
  10. return {
  11. flag: "true",
  12. msg: "隐藏",
  13. }
  14. },
  15. methods: {
  16. handle() {
  17. this.flag = !this.flag;
  18. this.msg = this.flag ? "隐藏" : "显示";
  19. },
  20. },
  21. });
  22. </script>
  • v-on: 指令,添加一个事件监听器,通过它调用在 Vue 实例中定义的方法.高频指令,缩写为@ .
    事件修饰符.prevent - 修饰符告诉 v-on 指令对于触发的事件调用event.preventDefault();.stop - 阻止事件的冒泡;.self - 只当事件是从侦听器绑定的元素本身触发时才触发回调
    按键修饰符 KeyboardEvent.key,如监控回车.keyup.enter
    事件中回调传参使用$event
  1. <body>
  2. <div class="app">
  3. <p :style='pStyle' @click='pClick($event)'>
  4. <!-- 修饰符可串联,prevent禁a标签跳转,stop禁冒泡 -->
  5. <a :href="url" v-text="urlText" v-on:click.prevent.stop="handle"></a>
  6. </p>
  7. </div>
  8. <script>
  9. new Vue({
  10. el: ".app",
  11. data() {
  12. return {
  13. pStyle: { height: "50px", width: "100px", backgroundColor: "green" },
  14. url: "http://php.cn",
  15. urlText: "php中文网",
  16. }
  17. },
  18. methods: {
  19. // p元素事件
  20. pClick($event) {
  21. console.log($event);
  22. },
  23. // a元素事件
  24. handle() {
  25. console.log('未满18周年,禁入');
  26. }
  27. },
  28. })
  29. </script>
  30. </body>
  • v-if:指令,用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染。

  • v-else-if:指令,充当 v-if 的“else-if 块”,可以连续使用,必须紧跟在带 v-if 或者 v-else-if 的元素之后

  • v-else:指令,来表示 v-if 的“else 块”,必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别

  1. <body>
  2. <div class="app">
  3. <p v-if="score >= 90" v-text="msg[0]"></p>
  4. <p v-else-if="score >= 70 && score < 90" v-text="msg[1]"></p>
  5. <p v-else-if="score >= 60 && score < 70" v-text="msg[2]"></p>
  6. <p v-else v-text="msg[3]"></p>
  7. </div>
  8. <script>
  9. new Vue({
  10. el: ".app",
  11. data() {
  12. return {
  13. score: 30,
  14. msg: ["优秀", "良好", "及格", "不及格"],
  15. }
  16. },
  17. })
  18. </script>
  19. </body>
  • v-for:指令,基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名。v-for 还支持一个可选的第二个参数,即当前项的索引。v-for必须配合key来使用.
    语法:v-for:”(item,index) in/of items” :key=”index”
    v-for 也可以来遍历一个对象,对象一般使用键名做key.
    语法:v-for:”(val,name,index) in/of object” :key=”name”

  1. <body>
  2. <div class="app">
  3. <ul>
  4. <!-- 遍历数组 -->
  5. <li v-for="(item, index) in citys" :key="index" v-text="item"></li>
  6. </ul>
  7. <ul>
  8. <!-- 遍历对象 -->
  9. <li v-for="(val, name, index) in user" :key="name" v-text="`${name}:${val}`"></li>
  10. </ul>
  11. <!-- 遍历对象数组 -->
  12. <ul v-for="(user, index) in users" :key="index">
  13. <li v-for="(val, name, index) in user" :key="name" v-text="`${name}:${val}`"></li>
  14. </ul>
  15. </div>
  16. <script>
  17. new Vue({
  18. el: '.app',
  19. data() {
  20. return {
  21. // 数组
  22. citys: ['北京', '上海', '天津', '重庆'],
  23. // 对象
  24. user: { name: '张三', gender: '男', age: '20', email: 'zs@qq.com' },
  25. // 对象数组
  26. users: [
  27. { id: 1, name: '张三', gender: '男', age: '20', email: 'zs@qq.com' },
  28. { id: 2, name: '李四', gender: '男', age: '30', email: 'ls@qq.com' },
  29. { id: 3, name: '王五', gender: '男', age: '40', email: 'ww@qq.com' },
  30. ]
  31. }
  32. },
  33. })
  34. </script>
  35. </body>
  • v-model:指令,它能轻松实现表单输入和应用状态之间的双向绑定.在表单元素外使用不起作用
    修饰符.lazy - 等同input change事件;.number - 输入字符串转为有效的数字trim - 过滤输入首尾空格
  1. <body>
  2. <div class="app">
  3. <p v-text="`模型中的数据:${something}`"></p>
  4. <!-- 双向绑定 -->
  5. <input type="text" v-model="something">
  6. <!-- 延迟双向绑定 -->
  7. <input type="text" v-model.lazy="something">
  8. </div>
  9. <script>
  10. new Vue({
  11. el: '.app',
  12. data() {
  13. return {
  14. something: 0,
  15. }
  16. },
  17. })
  18. </script>
  19. </body>
  • 计算属性:computed.计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。每个计算属性都包含两个set、get 属性

  1. <body>
  2. <div class="app">
  3. <input type="number" min="0" max="100" v-model="num">
  4. <p>单价:{{price}}</p>
  5. <p>总额:{{mount}}</p>
  6. </div>
  7. <script>
  8. const ve = new Vue({
  9. el: '.app',
  10. data() {
  11. return {
  12. price: 50,
  13. num: 0,
  14. }
  15. },
  16. computed: {
  17. mount: {
  18. get() {
  19. return this.price * this.num;
  20. },
  21. set(val) {
  22. if (val > 1000) {
  23. this.price = 40;
  24. }
  25. },
  26. }
  27. },
  28. });
  29. </script>
  30. </body>
  • 侦听器属性:watch.当需要在数据变化时执行异步或开销较大的操作时,通过watch方法,来响应数据的变化。watch中的属性方法名要与data中的数据名相同.侦听器属性和计算属性在大多数可以替代,区别:computed 是基于data中数据进行处理的,data数据变化,他也跟着变化当data中数据没有发生改变时,我们调用computed中函数n次,只会进行缓存(执行一次),watch类似于监听机制+事件机制.

  1. <body>
  2. <div class="app">
  3. <input type="number" min="0" max="100" v-model="num">
  4. <p>单价:{{price}}</p>
  5. <p>总额:{{mount}}</p>
  6. </div>
  7. <script>
  8. const ve = new Vue({
  9. el: '.app',
  10. data() {
  11. return {
  12. price: 50,
  13. mount: 0,
  14. num: 0,
  15. }
  16. },
  17. watch: {
  18. num(newVal, oldVal) {
  19. this.mount = newVal * this.price;
  20. }
  21. }
  22. });
  23. </script>
  24. </body>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议