2016-02-18 2 views
0

Простой и понятный. У меня есть эта фабрика:Заводской метод, как представляется, не определено

ctrls.factory('dataLoad', ['$http', function($http) { 
    return { 
     loadFromJSON: loadFromJSON 
    } 

    function loadFromJSON() { 
     $http.get("data.json").then(function(response) { 
      return response; 
     }); 
    } 
}]); 

Это тот же модуль, что и мой контроллер. Контроллер привязывается к шаблону после типичной технологии маршрутизации, но все загружается в шаблон index.html, поэтому не должно быть проблем с вводом «dataLoad» в контроллер, который работает хорошо и не дает ошибок:

ctrls.controller('mainCtrl', ["$scope", "dataLoad", function($scope, dataLoad) { 

в контроллере Звоню loadFromJSON из метода, а затем вызвать этот метод:

function loadData(){ 
    dataLoad.loadFromJSON().then(function(data) { 
     $scope.allCharts = data; 
     console.log($scope.allCharts); 
    }).then(function(err){ 
     console.log(err); 
    }); 
} 
loadData(); 

Но это, так или иначе, не работает! Это дает мне следующую ошибку:

Error: dataLoad.loadFromJSON(...) is undefined

Что я делаю неправильно?

+0

Что скажете, когда вы используете console.log (dataLoad) в своем контроллере? –

ответ

3

loadFromJSON не имеет инструкции return, поэтому он возвращает undefined, когда вы это позвоните.

Возможно, вы должны были вернуть обещание вернуть $http.

function loadFromJSON() { 
    return $http.get("data.json"); 
} 

(я удалил then обработчик вы положили там, так как он ничего не делал).

+0

Я также думаю, что это, скорее всего, проблема: P – user3632710

+0

Ваш пример работает! Я не знаю, что случилось с моим кодом, я не справился с возможностью ошибки, но я собирался добавить его позже. Что не удалось? Почему внутреннее возвращение после того, как было сказано, не сработало? – Zerok

+0

Я сказал вам, что случилось. Функция 'loadFromJSON' не имела оператора возврата. Таким образом, он вернулся не определен. Итак, когда вы это сделали: 'dataLoad.loadFromJSON(). Then' вы делали' undefined.then' – Quentin

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