LINUX.ORG.RU

Angular and JSON file

 , ,


0

1

Всем добрый день. Есть у меня в проекте ряд элементов которые я вынес в отдельную factory и как некий конфиг запрашиваю. Решил я это все дело вынести в json файл, и тут я попал же на первые грабли. Вот код этой factory:

App.factory('ConfigFactory',['$http',function($http){

    function getConfig(confObj){

        $http.get('config/config.json').then(function(result){
            var obj =  result.data[confObj];
            return obj;
        });
    }

    return {
        getConfig: getConfig
    }
}]);
Так как в файле есть разные объекты конфигов для разных контроллеров то параметр функции - это имя объекта который нужно вернуть. Но в чем беда когда в factory делаю console.log(obj)то получаю все как надо. А в контроллере эта беда мне возвращает undefined.


Ассинхронность. Возвращай promise: убирай then и делай return $http.get();. Там где запрашиваешь конфиг делай then.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)

console.log(ConfigFactory.getConfig()) ?

Попробуй так:

App.factory('ConfigFactory',['$http',function($http) {
    function getConfig(confObj){
        return $http.get('config/config.json').then(function(result) {
            var obj = result.data[confObj];
            return obj;
        });
    }
    return {
        getConfig: getConfig
    }
}]);

В контроллёре:

ConfigFactory.getConfig('key').then(
    function (obj) {
        console.log(obj)
    }
);
Kilte ★★★★★
()
Ответ на: комментарий от Black_Roland

Твое решение помогло, спасибо)

Berdin
() автор топика
Ответ на: комментарий от Berdin

Вероятно потому что result.data[confObj] было undefined.

Kilte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.