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。