如何获取/设置控制器/模块外的变量?

时间:2015-07-07 06:15:55

标签: javascript angularjs get set

假设我有一个预定义的模块/控制器,它将苹果设置为绿色。

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

我可以将苹果放在控制器外面吗?像。的东西。

_core.mainController.apple

这可能吗?我还需要使用外部插件设置变量,抱歉我是一个完整的角度菜鸟,它有点令人生畏。

2 个答案:

答案 0 :(得分: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
});

答案 1 :(得分:0)

您可以使用factory来设置控制器外的任何模块。

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