我遵循这种风格来编写我的角度代码:
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
我回来了。
我觉得这应该可行。我疯了吗?
答案 0 :(得分:3)
dataService.someValue
为空,因为您使用service
初始化了someValue = null
。
当您更改 someValue
功能中的validate
时,您没有更新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;
}
}