设置AngularJS全局值以访问和设置控制器

时间:2015-04-22 20:04:27

标签: angularjs

我一直在尝试AngularJS值,并希望存储一个全局值来访问和设置不同的控制器。

所以我一直在尝试使用价值方法:

var app = angular.module('myApp', []);

app.value('globalValue', 0);

app.controller('myCtrl', ['$scope', '$rootScope', 'globalValue', function($scope, $rootScope, globalValue) {
    $scope.updateValue = function() {
        globalValue++;
    };    
}]);

app.controller('myCtrlB', ['$scope', '$rootScope', 'globalValue', function($scope, $rootScope, globalValue) {
        $scope.someValueB=globalValue;

}]);

这是fiddle

这不像我想象的那样有效,所以在我的小提琴中,当点击按钮增加我的'global'时,myCtrlB中的scope属性不会改变。

我显然已经错误地解决了这个问题,我是否完全误解了如何使用value()?

由于

1 个答案:

答案 0 :(得分:2)

此代码基本上应该工作,您需要一个对象,因此两个控制器都指向同一个对象,并且该对象的某些属性已更改。否则,您将globalValue的初始值分配给某个局部变量,但它不是引用。

var app = angular.module('myApp', []);

app.value('globalValue', {counter:0});

app.controller('myCtrl', ['$scope', '$rootScope', 'globalValue', function($scope, $rootScope, globalValue) {
    $scope.updateValue = function() {
        globalValue.counter++;
    };    
}]);

app.controller('myCtrlB', ['$scope', '$rootScope', 'globalValue', function($scope, $rootScope, globalValue) {
        $scope.someValueB=globalValue;

}]);

更新了小提琴:http://jsfiddle.net/kfxy5hs1/3/