我将数据存储在Angular服务中(以跨控制器共享)并提供更新它的功能:
.factory('DataManager', function($rootScope){ var _json = {init: 'from DataManager'}; return { json: _json, changeTo: function (newVal) { _json = newVal; console.log("Changing to ", _json); } }; })
然后我只是将数据拉入控制器:
.controller('MainCtrl', function(DataManager){ var MC = this; MC.json = DataManager.json; MC.changeTo = DataManager.changeTo; })
问题是 - 当调用MC.changeTo
函数时,它会在服务中更新_json
变量,但不在控制器中更新!
以下JSbin说明了问题。
知道我在这里做错了吗?
答案 0 :(得分:1)
试试这个。您的代码不起作用,因为_json
变量每次都引用不同的对象。 angular.copy
将新对象复制到同一个引用。
changeTo: function (newVal) {
angular.copy(newVal, _json);
console.log("Changing to ", _json);
}