我将数据存储在 Angular 服务中(以便在 Controller 之间共享)并提供更新它的功能:
.factory('DataManager', function($rootScope){ var _json = {init: 'from DataManager'}; return { json: _json, changeTo: function (newVal) { _json = newVal; console.log("Changing to ", _json); } }; })
然后我只需将数据拉入 Controller 即可:
.controller('MainCtrl', function(DataManager){ var MC = this; MC.json = DataManager.json; MC.changeTo = DataManager.changeTo; })
问题是 - 当调用 MC.changeTo
函数时,它会更新服务中的 _json
变量,但不会更新 Controller 中的变量!
这里是JSbin说明问题。
知道我在这里做错了什么吗?
最佳答案
试试这个。您的代码不起作用,因为 _json
变量每次都引用不同的对象。 angular.copy 将新对象复制到同一引用。
changeTo: function (newVal) {
angular.copy(newVal, _json);
console.log("Changing to ", _json);
}
关于javascript - 服务内部的数据更改不会更新范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33826964/