原始对象更改时,绑定不会更新

时间:2014-07-01 21:39:59

标签: angularjs data-binding angularjs-scope

我认为我误解了数据绑定和范围如何在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()方法并将工厂中的原始对象替换为新对象。 我的绑定不应该自动更新吗?如果它不应该......这是实现这个目标的最佳方法吗?

1 个答案:

答案 0 :(得分:3)

原始对象不会改变。你只是改变对它的引用。


请改用:

setObject : function(obj) {

    angular.copy(obj, myObject);
}