从服务返回的变量未更新

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