У меня есть коды контроллеров из разных 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
});
Мне нужно иметь доступ к $ scope.goals_selected из NLSessionsCtrl. Как мне это сделать? Спасибо, парни.
Используйте фабрику/службу для хранения 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();
}]);
$ scope - это "объект", который "связывается" с элементом DOM, где вы применяете контроллер. Таким образом, контекст $ scope остается внутри контроллера.
Если вы хотите получить доступ к переменным в двух контроллерах, попробуйте поделиться им через service
/Factory или $ rootScope
Вот sample App
тот, который вы хотите получить в любом контроллере, назначает его $ rootScope. и получить доступ к нему в любом контроллере, который вы хотите.