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

Angularjs 将值设置为var后,它仍然包含其默认值,angularjs,service,default-value,Angularjs,Service,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] =

在我的模型中,我将某些变量默认为
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

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;
};
});
问题是如何做到这一点。好像我指的是另一个物体上的财产

你应该改变

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

应该更改
数据的值

然后您可以使用类似于
loginModel.data.loggedIn

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

无论如何,为了避免“”作用域冲突,请尝试使用return语句外部化服务方法(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
};

});

set和get函数是否在同一个控制器中调用?是否尝试将“数据”添加到本地对象(此)?是的,相同的名称并尝试将其引用到此对象。数据-仍然存在相同的问题。问题是,我希望数据属性是私有的,类似于闭包。因此,只有通过getter/setters才能访问,实际上,将
var data
更改为
this.data
并不能解决问题。仍然是相同的行为。是的,那么只有您的更改才会反映到“数据”。您是否将所有
数据
更改为
此。数据
。这里发生了一些可疑的事情。。即使这样也不行。我输出了完整的对象,属性的值发生了变化。我使用getter检索它,但它仍然为null。即使我通过
loginModel.data.loggedIn
its null直接访问它,而完整对象具有更新的值。这是a-sync问题。我在哪里设置前读VAR。但是,该对象在控制台中得到更新的a-sync。