我有一个简单的登录控制器来处理应用程序登录过程。在模块级别,我创建了一个这样的常量:
.constant('MyConstant', [{
id: null,
user: null
}])
在我的登录控制器中,我传递了常量,如下所示:
.controller('loginController', [
'$scope',
'MyConstant',
function ($scope, MyConstant) {
//here i want to change the constants data like this:
MyConstant.user = 'My new username'
}
])
但是当我在这里调用常量时,我得到了未定义的? 如何正确处理这个问题?或者这样做完全不同更好吗?
然后在调用其他控制器时,我希望能够使用这些新数据:
.controller('otherController', [
'$scope',
'MyConstant',
function ($scope, MyConstant) {
//this should return 'My new username'
console.log(MyConstant.user);
}
])
答案 0 :(得分:5)
尝试替换:
.constant('MyConstant', [{
id: null,
user: null
}])
到
.constant('MyConstant', {
id: null,
user: null
})
并在控制器中添加常量service
:
.controller('otherController', [
'$scope', 'MyConstant',
function ($scope, MyConstant) {
//this should return 'My new username'
console.log(MyConstant.user);
}
])
用作共享服务(在 root 中定义),以便可以在任何控制器(整个应用程序)中使用
应该有用。
答案 1 :(得分:0)
您忘记在MyConstant
中注入otherController
。
但这不应解决您的问题。 常量对于API端点或您不必在应用内部更改的任何值都很有用。
为什么不使用服务/工厂?