我正在使用 2 个不同的 Controller ,共享一个全局值 currentOpenningFolder。我希望 2 个 Controller 无论如何都能同步到该变量。但在此示例中,在 GET 请求中,我更改了第一个 Controller 中的变量,但无法在第二个 Controller 中查看该变量。相反,它显示 currentOpenningFolder
的初始值。任何想法为什么会发生这种情况?
angular.module('scopeExample', [])
.controller('MyController', ['$scope','currentOpenningFolder','$http', function($scope,currentOpenningFolder,$http) {
$scope.sayHello = function() {
$http.get('https://api.github.com/users/chuson1996').then(function(obj){
currentOpenningFolder = obj;
console.log(currentOpenningFolder);
})
};
}])
.controller('MyController2', ['$scope','currentOpenningFolder', function($scope,currentOpenningFolder) {
$scope.sayHello = function() {
$scope.currentOpenningFolder = currentOpenningFolder;
console.log($scope.currentOpenningFolder);
};
}])
.value('currentOpenningFolder',{});
最佳答案
不要像这样将一个对象分配给其他对象:
currentOpenningFolder = obj;
如果您这样指定,currentOpenningFolder
将释放对原始对象的引用并引用其他对象obj
。因此,最好的方法是创建 currentOpenningFolder 的属性并将对象分配给该属性,如下所示:
currentOpenningFolder.prop = obj;
然后将其访问到其他 Controller ,例如:
$scope.currentOpenningFolder = currentOpenningFolder.prop;
已编辑:
试试这个 plunkr
关于javascript - 在 AngularJS 中发出 GET 请求后,在 2 个 Controller 之间共享全局变量失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30036514/