博主信息
博文 26
粉丝 0
评论 3
访问量 23271
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
VUE的条件渲染,计算属性,侦听器演练,比较计算属性与侦听器之间的区别
后网络时代
原创
732人浏览过

实例演示条件渲染

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <h2 style="visibility:hidden;">数据测试</h2>
  10. <div id="app">
  11. <!-- v-if 会移除元素 -->
  12. <p v-if="flag" v-text="msg"></p>
  13. <button @click="flag=!flag;tips=flag?'隐藏':'显示'" >{{tips}}</button>
  14. <!-- 多分枝 -->
  15. <p v-if="point > 1000 && point < 2000">{{grade[0]}}</p>
  16. <p v-else-if="point > 2001 && point < 3000">{{grade[1]}}</p>
  17. <p v-else-if="point > 3001 && point < 4000">{{grade[3]}}</p>
  18. <p v-else="point > 4001">{{grade[4]}}</p>
  19. <!-- v-show 是否显示出来 只是隐藏元素 -->
  20. <p v-show="show">v-show只是隐藏元素</p>
  21. </div>
  22. <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
  23. <script>
  24. // v-if:元素是否添加到页面中
  25. // v-show:元素是否显示出来(在DOM树中的元素);
  26. const vm=new Vue({
  27. el:document.querySelector('#app'),
  28. data(){
  29. return{
  30. show:true,
  31. msg:'明天吃鸡,不来的是狗',
  32. flag:true,
  33. tips:"隐藏",
  34. point:3500,
  35. grade:['普通会员','中级会员','高级会员','贵族会员'],
  36. };
  37. },
  38. });
  39. </script>
  40. </body>
  41. </html>

效果:

计算属性

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <!-- <p><input type="number" style='width:5em;' @change="calc" v-model="num" min="0"></p> -->
  11. <!-- 使用计算属性实现 ,计算属性本质上就是原生的访问器属性-->
  12. <p><input type="number" style='width:5em;' v-model="num" min="0"></p>
  13. <p>单价:{{price}}元</p>
  14. <!-- <p>总价:{{total}}元</p> -->
  15. <!-- 使用计算属性实现 -->
  16. <p>总价:{{amount}}元</p>
  17. </div>
  18. <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
  19. <script>
  20. const vm=new Vue({
  21. el:document.querySelector('#app'),
  22. data(){
  23. return {
  24. num:0,
  25. price:60,
  26. total:0,
  27. };
  28. },
  29. //计算属性最终要和data合并,所以不要和data的属性重名
  30. computed:{
  31. // 访问器属性有两个getter setter
  32. // 计算器默认是getter属性
  33. amount:{
  34. get(){
  35. return this.price*this.num;
  36. },
  37. set(value){
  38. console.log(value);
  39. if(value>1000) this.price=40;
  40. }
  41. }
  42. }
  43. // methods: {
  44. // calc(){
  45. // this.total=this.price*this.num;
  46. // }
  47. // },
  48. });
  49. vm.amount=1600;
  50. </script>
  51. </body>
  52. </html>


侦听器:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>监听器属性</title>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <p><input type="number" style='width:5em;' v-model="num" min="0" :max="max"></p>
  11. <p>单价:{{price}}元</p>
  12. <p>总价:{{total}}元</p>
  13. </div>
  14. <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
  15. <script>
  16. const vm=new Vue({
  17. el:document.querySelector('#app'),
  18. data(){
  19. return {
  20. num:0,
  21. price:60,
  22. total:0,
  23. max:100,
  24. };
  25. },
  26. //使用监听器属性
  27. watch:{
  28. //监听某一个属性的变化,它的属性名必须和data中的属性同名
  29. num(newvaule,oldvalue){
  30. console.log(newvaule,oldvalue);
  31. this.total=this.price*newvaule;
  32. if(newvaule>=20){
  33. alert('请补货');
  34. this.num=newvaule;
  35. }
  36. },
  37. },
  38. });
  39. //:key 保证在新添项或者删除已有列表的情况下不影响原来的列表的状态
  40. </script>
  41. </body>
  42. </html>

效果:

计算属性与侦听器之间的区别:
计算属性最终要和data合并,所以不要和data的属性重名,适用于数据之间存在依赖计算的场景。
侦听某一个属性的变化,它的属性名必须和data中的属性同名,适用于根据监听数据变化来处理的场景。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学