首页 > 解决方案 > Vue $watch 用于对象数组

问题描述

我是 Vue 的新手。我们正在将代码从 dojo 迁移到 Vue。我试图将手表添加到对象数组中。我必须添加手表的数据是一个对象数组,而对象又可以有数组。

样本数据:

    ‘ItemList’: [
    {
    ‘item’: {
    ‘term’: ‘1’,
    ‘timing’:‘A’
    ‘steps’: [{}], ( Array )
    ‘parameter’: [{}] ( Array)
    …
    …

    almost 600 values
    }
    },
    {
    ‘item’: {
    ‘term’: ‘2’,
    ‘timing’:‘B’
    ‘steps’: [{}],
    ‘parameter’: [{}]

    ....
    ....

    almost 600 values
    }
    }
    ]

在旧的道场中,代码是这样的:

    for (c = 0; c < itemList.length; c++) {
       item=itemList[c];
       var itemWatch = item.watch(function(name,oldVal,newVal) {
       }
    }

//Here the name gives what value of array is changed . I need that for future 
//logic. we can add  watch on each item.

    computed:{
      clonedItems: function(){
                         return JSON.parse(JSON.stringify(this.itemList));
                      }     
                },
                 watch:{

                    clonedItems:{
                              deep: true,
                              handler: function (val, oldVal) {

这个我试过了,效果很好,但是要知道这个值发生了什么变化将是繁重的计算。这个数组可以有 100 个项目,每个项目有 600 个项目,我们也有数组。

请指导什么是实现我们所拥有的类似功能的最佳方法。

标签: vue.jsvue-componentvuex

解决方案


推荐阅读