【问题标题】:how to get/set variables outside of controller/module?如何在控制器/模块之外获取/设置变量?
【发布时间】:2015-07-07 06:15:54
【问题描述】:

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

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

我可以把苹果放在控制器外面吗?类似的东西。

_core.mainController.apple

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

【问题讨论】:

    标签: javascript angularjs get set


    【解决方案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
    });
    

    【讨论】:

    • 假设我在每个模块中定义了一个函数,假设它被称为“就绪”,一旦 dom 就绪,我怎么能调用它,而不创建新的模块/工厂/控制器?跨度>
    【解决方案2】:

    您可以使用工厂设置控制器之外的任何模块。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多