原始对象更改时,绑定不会更新。正在复制唯一/最佳解决方案吗?

时间:2015-08-25 23:54:27

标签: angularjs

我遇到了与此处所述相同的问题。

Binding doesn't update when the original object changes

我正在寻找有关如何解决此问题的更多意见。

我认为这将是一个非常普遍的问题。几乎所有ajax请求在spa的返回json中用于创建js对象。创建新引用以指向这些对象和/或更新现有引用以指向这些新对象。

将对象属性从新对象复制到现有对象是唯一/最佳解决方案吗?如果对象是大集合或具有深度图形怎么办?似乎复制不会很好。有没有办法监控/观看参考?

我在考虑这个错误吗?

作为请求,我设置了一个jsfiddle来模拟问题。

https://jsfiddle.net/ho69ofog/

    var newObject = {
        "subObject": {
            "subProperty": Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5)
        }
    };
    myObject = newObject;

请注意,更新的唯一范围值是整个工厂对象附加到范围时。如上所述和引用的问题Binding doesn't update when the original object changes中,复制对象而不是创建新对象(在updateTimer函数内)将导致所有范围值更新。

1 个答案:

答案 0 :(得分:0)

它不是唯一的解决方案,但它是最简单的解决方案之一。 这是另一个。在控制器中使用$ watch来检测对象何时发生变化。

$scope.$watch(function(){
  return myFactory.getObject();
},
function(newValue){
  $scope.subObject = angular.isDefined(newValue) ? newValue.subObject : undefined;
});