修改控制器AngularJS的全局值
Modify a global value from a controller AngularJS
我试图修改一个控制器中的全局值,并在另一个控制器上使用它,但该变量保留旧值。
app.js
var app = angular.module('PressRoom', []);
app.value('globals',
{
companyName: 'My company',
appName: 'My app',
user: {
name: 'Test user',
img: '',
role: ''
}
});
我想修改它的控制器
app.controller('LoginController', ['$scope','globals',function($scope,globals)
{
$scope.globals = globals;
globals.user.name = "Brand new user";
// Redirect to dashboard.
}]);
修改了我想使用的控制器。
app.controller('DashboardController', ['$scope','globals',function($scope,globals,)
{
$scope.globals = globals;
}]);
在最后一个控制器的视图中,我在指令上使用全局值,但它显示的是Test user,而不是Brand new user
你不能。但是,您可以创建一个具有getter和setter的服务,并以与使用值相同的方式使用它。不用说,你甚至可以更聪明一点,创建一个可以用作密钥和价值存储的服务。例如,MyDataStore.set("myVal",1)
和MyDataStore.get("myVal")
。但为了简单起见,这里有一个简单的Service演示了我建议的方法。
angular.module("my", [])
.service("MyValue", function() {
return {
set: function(val) {
this.val = val;
},
get: function() {
return this.val;
}
}
})
.run(function(MyValue) {
MyValue.set("Initial Value");
})
.controller("MyController", function(MyValue) {
console.log(MyValue.get()); //prints Initial Value
MyValue.set("New Value");
console.log(MyValue.get()); //prints New Value
})
https://jsfiddle.net/oL0m2f7j/1/
使用$rootScope变量并在工厂/服务内部声明(不在控制器中)
这样,您就可以在整个应用程序中使用它,并可以将该值复制到本地范围,或者在需要时覆盖它。
app.factory('MyFactory', MyFactory);
function MyFactory() {
$rootScope.userName = '';
}
app.controller('MyController', MyController);
function MyController() {
$scope.desiredName = $rootScope.userName;
$scope.desiredName = 'Your desired value';
}
相关文章:
- AngularJS中的封装窗口全局变量
- AngularJS智能表全局配置实现
- 修改控制器AngularJS的全局值
- 访问AngularJS中的全局javascript变量
- 如何使用AngularJS,Vise和UI Router全局实现身份验证
- 如何在angularJS中的全局名称映射上确定控制器
- AngularJS,在哪里放置全局列表等
- angularJS中的全局函数
- 将全局变量从控制器调用到HTML视图AngularJS
- Angularjs-分离全局搜索和页面内容
- 从ngInit在AngularJS中全局设置自定义HTTP头
- AngularJS:如何实现全局错误处理程序并显示错误
- AngularJS需要JS浏览器化和Javascript模块/全局范围的噩梦
- AngularJS ui-router:如何全局解析所有路由的典型数据
- AngularJS:避免使用“angular”全局对象
- 为时区设置 AngularJS 全局配置
- NodeJS与AngularJS,所需的HTML文件不是跨控制器的数据绑定全局变量
- Angularjs(1.3.6+) $resource拦截器和全局 401 处理程序
- 在 AngularJS 中使对象全局化
- Angularjs-在尝试使用全局服务时无法解决所需的依赖关系