将值设置为 var 后,它仍然包含其默认值

After setting a value to a var it still contains its default value

在我的模型中,我将某些变量默认为 null

angular.module('qbs.models').service('loginModel', function () {

this.name = 'loginModel';

var data = {
    //.......
    loggedIn: null,
    loggedOut: null
    //.......
};

this.set = function (key, value) {
    data[key] = value;
};

this.get = function (key) {
    return data[key];
};

this.getAll = function () {
    return data;
};
});

稍后在成功登录后我将loggedIn设置为true

loginModel.set('loggedIn', true);

当我用 console.log 读出模型时,属性 设置正确。但是,当使用

检索值时
`loginModel.get('loggedIn');`

我还是null

问题是这怎么可能。好像我指的是另一个对象上的 属性?!

你应该改变

var data = {
    //.......
    loggedIn: null,
    loggedOut: null
    //.......
};

this.data = {
    //.......
    loggedIn: null,
    loggedOut: null
    //.......
};

应该改变data的值 然后你可以使用 loginModel.data.loggedIn.

您的 loginModel 服务调用是连续的吗?可能是异步问题...

无论如何,为了避免'this'范围冲突尝试使用[=21=外部化服务方法(get,get,getAll...) ] 语句,像这样:

angular.module('qbs.models').service('loginModel', function () {

var data = {
    //.......
    loggedIn: null,
    loggedOut: null
    //.......
};

function set (key, value) {
    data[key] = value;
};

function get (key) {
    return data[key];
};

function getAll () {
    return data;
};

return {
  name: 'loginModel',
  get: get,
  set: set,
  getAll: getAll
};

});