在对数据进行监听的时候,当数据data
进行变换,watch
将进行一系列的操作,如果这些操作可能会对监听的数据data
进行修改的时候,数据data
将会改变,那么又将会被watch
所监听到,一直重复,陷入一个死循环。
说的简单明了一些,如何对数据进行操作,但又不会对原来的数值进行改变。。。
直接将数据复制一份,即克隆值,watch
对数据进行的操作只会针对克隆值,而数据值本身不会变动,那么就不会再次触发watch
的监听
msg(val, oldVal) {
var newArr = [];//定义一个数组存放克隆值
this.$data.msg.forEach(function(e, i) {
newArr.push(e);//循环遍历将数值复制给克隆值,注意不能采用"="的赋值操作,否则还是会改变数据值本身
})
this.$data.data = newArr
}
网友评论