фабрика не опознается контроллером

У меня есть контроллер «ListController», который необходимо заполнить данными на стороне сервера.

app.controller("ListController", function(){ 
  var bar = this; 
  bar.venues = MyFactory.load(); 
}

и я хотел получить массив json с сервера, поэтому я подумал создать фабрику, использующую «$ http» как таковую:

app.factory("MyFactory", ["$https", function($https){
  var myService = {};
  myService.load = function(){
    $http.get("scripts/Query.php").success( function(rows){ 
      myService.rows = rows;
      return myService.rows;
    };
  };
  return myService;
}]);

Итак, я подумал, что MyFactory можно будет вызывать из контроллера приложения.

app – это та же переменная типа angular.module("BarMe", []);

Ошибка, которую я получаю в своем javascript: MyFactory is undefined


person Fallenreaper    schedule 08.12.2015    source источник


Ответы (1)


Вы не внедрили factory в свой контроллер.

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

app.controller("ListController", function(MyFactory){ 

}

Более того, ваш метод имеет прямое назначение обратного вызова, которое не принесет вам никаких данных.

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

MyFactory.load().then(function(data){
  bar.venues = data;
});

Вы также должны вернуть $http с ответом от фабрики

myService.load = function(){
   return $http.get("scripts/Query.php").success( function(rows){ 
      return rows;
    };
  };
person Anik Islam Abhi    schedule 08.12.2015
comment
у меня он устанавливает myService.rows = rows, а затем возвращает по существу строки. Как-то избыточно. Итак, успех у меня был return rows;, но кажется, что он все еще дает мне ошибку инжектора для MyFactory. - person Fallenreaper; 08.12.2015
comment
можете ли вы предоставить свой полный код с html ?? будет лучше, если вы можете предоставить jsfiddle - person Anik Islam Abhi; 08.12.2015
comment
О, кажется, я заработал. Ваш способ сработал. Похоже, у меня были проблемы, как вы сказали. Я думал, что мне не нужна функция then. Спасибо! - person Fallenreaper; 08.12.2015