Как получить / установить переменные за пределами контроллера / модуля?

0

Скажем, у меня есть предопределенный модуль/контроллер, который устанавливает яблоко как зеленое.

var _core = angular.module('_core', []);
_core.controller('mainController', function($scope, $controller, $http) {
    $scope.apple = 'green';
});

Могу ли я получить яблоко вне контроллера? Что-то вроде.

_core.mainController.apple

Это возможно? Мне также нужно установить переменные с внешними плагинами, извините, что я полный угловой noob, это немного сложно.

Теги:
set
get

2 ответа

1
Лучший ответ

Если вы хотите, чтобы значение было доступно вне контроллера, вы можете сохранить его в $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
});
  • 0
    Допустим, у меня есть функция, определенная в каждом модуле, скажем, она называется «готово», как я могу вызвать ее, как только dom будет готов, без создания нового модуля / фабрики / контроллера?
0

Вы можете использовать фабрику, чтобы установить любой модуль вне контроллера.

    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();
   }]);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню