我认为我误解了数据绑定和范围如何在Angular中工作,或者我在Javascript中有一些误解。我希望有人可以帮助我。
假设我有一个有对象的工厂,并为它定义了一个getter / setter:
app.factory('myFactory', function(){
var myObject : {
subObject : {
subProperty : 'value'
}
};
return {
getObject : function() {
return myObject;
},
setObject : function(obj) {
myObject = obj;
}
};
};
然后,在控制器中我得到这个对象并将subObject分配给范围:
app.controller('myController', function($scope, myFactory){
var myObject = myFactory.getObject();
$scope.subObject = myObject.subObject;
});
在视图中,我绑定到该对象的subProperty:
<div> {{subObject.subProperty}} </div>
然后,有人调用myFactoy.setObject()方法并将工厂中的原始对象替换为新对象。 我的绑定不应该自动更新吗?如果它不应该......这是实现这个目标的最佳方法吗?
答案 0 :(得分:3)
原始对象不会改变。你只是改变对它的引用。
请改用:
setObject : function(obj) {
angular.copy(obj, myObject);
}