我一直在尝试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()?
由于
答案 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;
}]);