vue-09-Vue.set和数组方法

 在全局之下:vm.$set(this.lists , 2 , 'alalal') : 首先,如果你实例化了 Vue 对象,你可以使用 vm.$set ( 需要改变的数据对象 , 需要改变的数据的key , 需要改变后得到的值 )

在组件内部: this 可以取代 vm ,但是必须是在 Dom 节点 挂载之后 ,也就是需要在 mounted 以及 。 mounted 之后的钩子函数内部才能使用 this 因为此时 才会出现 this

如果是单html页面 , 可以使用 Vue.set ( 需要改变的数据对象 , 需要改变的数据的key , 需要改变后得到的值 )

 

<li v-for="(item , index) in lists" :key="index">
  {{ item }}
</li>
<button @click="add">添加</button>
export default {
  data() {
    return {
      date : new Date(),
      lists : ['1' ,'2' ,'3' ,'4']
    };
  },
  methods: {
    add(){
      // this.lists[0] = '5' .   //这样数组也是会更新的,但是新添加的数据,不是响应式的,在控制台改变他的值,页面展示不会变化
      // this.lists.push('5')    //这样数组也是会更新的,而且因为是调用的数组的变异方法,vue会监听数据变化,说一新增的数据也是响应式的
      this.$set(this.lists , 2 , 'alalal') .  //这样即更新了数组,又讲新增加的数据也变成了响应式数据
    }
  },
};

这里改变数据 的方法 ,在vue 内部定义了叫做 变异数组方法,原因是因为 ,vue 内部将这些数组方法,进行处理过了,会自动改变原数组,也就是 变成了自动响应的数据

而vue 还有另外的 数组方法 , 调用这些方法之后,不会改变原数组 , 而是生成一个新的数组

变异数组:Vue 将被侦听的数组的变异方法进行了包裹,所以它们也将会触发视图更新。这些被包裹过的方法包括

push()
pop()
shift()
unshift()
splice()
sort()
reverse()

新数组:例如 filter()、concat() 和 slice() 。它们不会改变原始数组,而总是返回一个新数组。当使用非变异方法时,可以用新数组替换旧数组:

example1.items = example1.items.filter(function (item) {
  return item.message.match(/Foo/)
})

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值