Angular.js如何在登录控制器中设置常量

时间:2017-01-10 16:06:53

标签: javascript angularjs

我有一个简单的登录控制器来处理应用程序登录过程。在模块级别,我创建了一个这样的常量:

.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);
        }
    ])

2 个答案:

答案 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端点或您不必在应用内部更改的任何值都很有用。

为什么不使用服务/工厂?

请参阅http://bguiz.github.io/js-standards/angularjs/constants/