Blogger Information
Blog 26
fans 0
comment 3
visits 17467
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
VUE的条件渲染,计算属性,侦听器演练,比较计算属性与侦听器之间的区别
后网络时代
Original
525 people have browsed it

实例演示条件渲染

  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中的属性同名,适用于根据监听数据变化来处理的场景。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

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!