我有来自不同js文件的这些控制器代码。
NLGoalsCtrl.js
angular.module('mysite').controller('NLGoalsCtrl', function ($scope) {
$scope.goals_selected = [];
});
NLSessionsCtrl.js
angular.module('mysite').controller('NLSessionsCtrl', function ($scope) {
//access $scope.goals_selected here
});
我需要能够从NLSessionsCtrl访问$ scope.goals_selected。我该怎么做呢?谢谢你们。
答案 0 :(得分:3)
使用工厂/服务存储goals
,负责在控制器之间共享数据。
myApp.factory('myService', [function() {
var goals = {};
return {
getGoals: function() {
return goals
},
setGoals: function(op) {
goals = op;
},
}
}])
.controller('NLGoalsCtrl', [function($scope, myService) {
$scope.goals_selected = {};
//Update goals_selected
myService.setGoals($scope.goals_selected );
}])
.controller('NLSessionsCtrl', [function($scope, myService) {
//Fetch
$scope.goals_selected = myService.getGoals();
}]);
答案 1 :(得分:1)
$ scope是一个"对象" "绑定"到应用控制器的DOM元素。所以$ scope的上下文仍然在控制器内。
如果要访问2个控制器中的变量,请尝试通过service
/ Factory或$ rootScope
答案 2 :(得分:0)
您要在任何控制器中访问的控制器将其分配给$ rootScope。 并在任何你想要的控制器中访问它。