Как передавать данные между контроллерами в angularjs?
Есть несколько контроллеров в ангуляре.
Как мне из rootScop-а или из одного контроллера обратиться к значению/функции другого?
- - - -
myApp.controller('AdminController', function($scope,$http,$rootScope) {
$scope.get_data= function () {
alert("я из AdminController");
}
$scope.get_data_in_SettingsController= function () {
//как мне здесь сослаться на SettingsController?
}
}
myApp.controller('SettingsController', function($scope,$http,$rootScope) {
$scope.get_data= function () {
alert("я из SettingsController");
}
}
А можете пояснить зачем? Контроллеры находящиеся на одном уровне не должны вообще общаться друг с дружкой, только через контроллер на уровень выше. Ну или в оооочень специфичных случаях.
Та я вот думаю, наверное пусть всё будет в одном контроллере. Просто я реализовал со вкладками и без перезагрузке страницы. Т.е., если ты на 1 вкладке-работает 1 контроллер, а если на др- то другой. Один из них (AdminController) есть только у админа-т.е. остальным он не выдаётся. Но появилась задача, которая должна быть всегда, не зависимо от выбора"текущей вкладки".Как вариант, на сколько я понял- всё сводить в один контроллер, просто у обычного пользователя не будет кода AdminController. Или как?Но всё-же интересно, как реализовать, если контроллеры на одном уровне
var myApp = angular.module('myApp', []);
// make a factory to share data between controllers
myApp.factory('Data', function(){
var data = {
firstName: ''
};
return {
getFirstName: function () {
return data.firstName;
},
setFirstName: function (firstName) {
data.firstName = firstName;
}
};
});
Создайте сервис, который будет хранить общие для всех контроллеров методы / данные, а потом используйте его. В качестве одного из параметров такой метод может принимать текущий $scope.