2015-02-28 3 views
1

Я выполняю этот стиль, чтобы написать свой угловой код:возвращаемой переменной от службы не обновляется

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 

Я возвращаюсь обратно.

Я чувствую, что это должно работать нормально. Я сошел с ума?

ответ

3

dataService.someValue null, потому что вы инициализировали 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'; 
    }; 

} 

или пройти через функцию геттера:

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

Спасибо. Теперь это намного больше. – lostintranslation

Смежные вопросы