vue 的方法,计算属性,侦听器,非响应式的解决方法

v-for:

  1\  遍历数组:***********

            <li v-for="item in personList"   :key="item.id">
                 姓名:{{item.name}}-----年龄:{{item.age}}
           </li>


      <li v-for="(item,index) in personList" :key="index">


      如果在修改或添加数组元素时,不打乱数组的元素位置,就可以用  index作为key值。否则就只能用其他的不重复的字段来做key,比如 :key="item.id"

 2\遍历对象:
      <div v-for="(pvalue,pkey) in product" :key="pkey">
           {{pkey}}---{{pvalue}}
      </div>


 3\遍历字符串
   <li v-for="(s,index) in str" :key="index">{{s}}---{{index}}</li>


4\ 遍历数字 

            <li v-for="(n,index) in 20" :key="index">
                {{n}}
            </li>

--------------------
计算属性:
    通过已有的属性计算得来的属性。它与data中的属性用法一样。
    计算属性具有缓存功能。

   完整的计算属性:
   computed:{
                fullName:{
                    get(){ //访问时,自动调用get()
                        console.log("计算属性中")
                        //采用小驼峰。
                      let uname=this.firstName.toLowerCase()+this.lastName.substr(0,1).toUpperCase()+this.lastName.substr(1).toLowerCase();
                      return uname;  
                    },
                    set(val){//当修改时,自动调用set()
                         console.log("被修改了"+val);
                    }
                }

            }

   
   当没有修改时,就不写set().没有set时,就可以简写:

          fullName(){

          }
          

  监听:watch

       watch监听data里面的属性或计算属性:
       watch:{
          属性名:{
             hanlder(newV,oldV){  

             },
             immediate:true,//初始化时就执行一次,默认是false,
             deep:true  //  要进行深度监听时,必须是true.默认是false
          }

          //如果监听中只有handler,可以简写:
          ||
         属性名(newV,oldV){

         }
       }

       也可以写在外面:

      let unWatch=   vm.$watch("属性名",function(newV,oldV){
            // unWatch();  取消监听
         },{immediate:true,deep:true})


    在vue中并非所有的语句都是响应式的。

      1、数组如果是通过下标来操作的就不是响应式的。
         this.nums[0]=100;  非响应
   
      数组提供的方法,就是响应式的

      vue单独提供了一个set方法专门解决非响应式的问题。

      this.$set(要修改的数组,下标,新值);

      2、对象:
        添加一个属性:非响应式
        this.tst.t="111"

           解决方法:  this.$set(对象名,"属性名",值)

        修改已有属性的值:是响应式的。

        vm.$set( target, propertyName/index, value )


     
       删除对象中的属性:
            delete this.tst.n;    非响应式

           解决方法: this.$delete(对象/数组, 属性名/index); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值