我遇到了与此处所述相同的问题。
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函数内)将导致所有范围值更新。
答案 0 :(得分:0)
它不是唯一的解决方案,但它是最简单的解决方案之一。 这是另一个。在控制器中使用$ watch来检测对象何时发生变化。
$scope.$watch(function(){
return myFactory.getObject();
},
function(newValue){
$scope.subObject = angular.isDefined(newValue) ? newValue.subObject : undefined;
});