从服务返回的变量未更新

时间:2015-02-28 21:02:37

标签: angularjs angularjs-service

我遵循这种风格来编写我的角度代码:

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

我回来了。

我觉得这应该可行。我疯了吗?

1 个答案:

答案 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;
    }
}