角度变量/函数全局范围

时间:2016-05-08 17:56:39

标签: angularjs scope global-variables

我有一个变量,我在我的应用程序中几乎无处不在,在许多不同的控制器中。 我正在寻找设置该变量的最佳方法:

- 变量需要从控制器更新,并导致整个应用程序(主要是其他控制器)的更新。

- 其中一些函数是一个具有函数的对象的实例,它有一个回调,这会导致任何问题吗?

到目前为止,似乎有两种方法: rootScope但显然很少建议:

myApp.run(function ($rootScope) {
   $rootScope.var = "string";
});

构建自定义指令(但是设置它的变量呢?)

angular.module('myApp').factory('test', function() {
 return {
     test : 'string'
  };
});

有人能指出我正确的方向并帮助我选择两个人吗?

1 个答案:

答案 0 :(得分:1)

我建议使用servicefactory在someService.variable中保存该值,并在广播n事件中保存此值已更改。我正在附加示例代码。它可能包含一些语法错误,但我想给你一个想法

  angular.module("myapp")
  .controller('myCtrl', function($scope, $rootScope, myService) {
    $scope.change = function() {
      myService.var = 'abc';
      $rootScope.broadcast('varChanged');
    };
  })

.controller('myOtherCtrl', function($scope, $rootScope, myService) {

    $rootScope.on('varChanged', function(e) {
      use(myService.var);
    });
  })
  .service('mySerice', function() {
    this.var = '';

  });