从服务返回的变量未更新
Returned variable from service not updated
我正在按照这种风格编写我的 angular 代码:
https://github.com/johnpapa/angularjs-styleguide
基本上它说要对您的服务执行此操作:
/* recommended */
function dataService() {
var someValue = '';
var service = {
someValue: someValue,
validate: validate
};
return service;
function validate() {
/* */
};
}
直到我在某个时候更改了 someValue 变量之前,这一直很糟糕。假设我有这个:
/* recommended */
function dataService() {
var someValue = null;
var service = {
someValue: someValue,
validate: validate
};
return service;
function validate() {
// do some stuff, then set someValue
someValue = 'validated';
};
}
如果我调用 dataService.validate();我看到它设置了 someValue 变量。但是在那之后我打电话给我尝试:
dataService.someValue
我得到空值。
我觉得这应该可以正常工作。我要疯了吗?
dataService.someValue
为空,因为您使用 someValue = null
.
初始化了 service
当您在 validate
函数中更改 someValue
时,您没有更新 service
.
的实例
你可以试试直接更新:
function dataService() {
var service = {
someValue: null,
validate: validate
};
return service;
function validate() {
// do some stuff, then set someValue
service.someValue = 'validated';
};
}
或者通过一个getter函数:
function dataService() {
var someValue = null;
var service = {
getSomeValue: getSomeValue,
validate: validate
};
return service;
function validate() {
// do some stuff, then set someValue
someValue = 'validated';
};
function getSomeValue()
{
return someValue;
}
}
我正在按照这种风格编写我的 angular 代码:
https://github.com/johnpapa/angularjs-styleguide
基本上它说要对您的服务执行此操作:
/* recommended */
function dataService() {
var someValue = '';
var service = {
someValue: someValue,
validate: validate
};
return service;
function validate() {
/* */
};
}
直到我在某个时候更改了 someValue 变量之前,这一直很糟糕。假设我有这个:
/* recommended */
function dataService() {
var someValue = null;
var service = {
someValue: someValue,
validate: validate
};
return service;
function validate() {
// do some stuff, then set someValue
someValue = 'validated';
};
}
如果我调用 dataService.validate();我看到它设置了 someValue 变量。但是在那之后我打电话给我尝试:
dataService.someValue
我得到空值。
我觉得这应该可以正常工作。我要疯了吗?
dataService.someValue
为空,因为您使用 someValue = null
.
service
当您在 validate
函数中更改 someValue
时,您没有更新 service
.
你可以试试直接更新:
function dataService() {
var service = {
someValue: null,
validate: validate
};
return service;
function validate() {
// do some stuff, then set someValue
service.someValue = 'validated';
};
}
或者通过一个getter函数:
function dataService() {
var someValue = null;
var service = {
getSomeValue: getSomeValue,
validate: validate
};
return service;
function validate() {
// do some stuff, then set someValue
someValue = 'validated';
};
function getSomeValue()
{
return someValue;
}
}