在对象 - 范围.$watch - AngularJS 中查找更新的字段



如果我这样做:

scope.$watch('obj', function(newObj, oldObj) {
  //...
}, true);

如何在对象中找到已更改的键值对?

.

只是为了理解我试图做什么:

我有一个形式的对象:

scope.actions = {
  action1: false,
  action2: false
}

当布尔值发生变化时,我想为其分配函数调用。比如,执行操作 - 撤消操作。

所以我是这样看的:

scope.$watch('actions', function(newObj, oldObj) {
  /*PSEUDO CODE START*/
  IF (action1 changed && action1 true) {
    do-func1();
  }
  IF (action1 changed && action1 false) {
    undo-func1();
  }
  ...
  /*PSEUDO CODE END*/
}, true);

我的问题是,如果我检查其布尔值,所有函数都会被调用。所以这里的重点是,如何在对象中找到更改的键值对?

scope.$watch('actions', function(newActions, oldActions) {
    for(var i in newActions) {
        if(newActions.hasOwnProperty(i)) {
            var newAction = newActions[i];
            var oldAction = oldActions[i];
            if(newAction !== oldAction) {
                if(newAction === true) {
                    doActions[i](); // do-func-i();
                } else if (newAction === false) {
                    undoActions[i](); // undo-func-i();
                }
            }
        }
    }
}, true);

doActions这是传统的行动地图

doActions = {
    action1 : function() {
        console.log('action1');
    },
    action2 : function() {
        console.log('action2');
    }
}

doActions['action1']将引用第一个函数

您可能也有一个数组,但是您需要引入一个索引来获取正确的函数doActions[0]

相关内容

  • 没有找到相关文章

最新更新