Скажем, у меня есть предопределенный модуль/контроллер, который устанавливает яблоко как зеленое.
var _core = angular.module('_core', []);
_core.controller('mainController', function($scope, $controller, $http) {
$scope.apple = 'green';
});
Могу ли я получить яблоко вне контроллера? Что-то вроде.
_core.mainController.apple
Это возможно? Мне также нужно установить переменные с внешними плагинами, извините, что я полный угловой noob, это немного сложно.
Если вы хотите, чтобы значение было доступно вне контроллера, вы можете сохранить его в $rootScope
вместо $scope
и вы можете напрямую использовать значения, хранящиеся в $ rootScope, где они могут быть введены. Таким образом, код становится:
var _core = angular.module('_core', []);
_core.controller('mainController', function($scope, $controller, $http, $rootScope) {
$rootScope.apple = 'green';
});
Теперь в каком-то другом месте говорят завод, вы можете использовать его как:
var _core1 = angular.module('_core1', []);
_core1.factory('someFactory', function($scope, $rootScope, $http) {
var fruit = $rootScope.apple;
//variable fruit now contains green
});
Вы можете использовать фабрику, чтобы установить любой модуль вне контроллера.
var App = angular.module('app', []);
App.factory('messages', function () {
var messages = {};
messages.list = [];
messages.add = function (someString) {
messages.list.push(someString);
};
messages.get = function() {
};
messages.clearList = function () {
messages.list.length = 0;
}
return messages;
});
И вы можете вызвать этот метод службы в свой контроллер.
App.Controller('myController',['$scope', 'messages', function(scope, messages) {
messages.add('Hello');
var myListy = messages.get();
}]);