У меня возникла проблема с попыткой установить довольно простой вызов с использованием фабрики и контроллера в угловых системах. Я пытаюсь следовать инструкциям по стилю Джона Папа и Тодда Мотто в настройке.Функция не определена ошибка в угловом контроллере
Во-первых, я использую 2 модуля
(function(){
'use strict';
angular.module('app',[
'app.core',
'app.property'
]);
})();
В 'app.core' Я определяю заводу
(function(){
'use strict';
angular.module('app.core')
.factory('dataservice',dataservice);
dataservice.$inject = ['$http','$q'];
function dataservice($http,$q) {
var service = {
getListing: getListing
};
return service;
function getListing() {
var def = $q.defer;
$http.get("http://acme.com/property/1?format=json")
.success(function(data){
service.getListing = data;
def.resolve(data);
});
return def.promise;
}
}
})();
и в 'app.property' Я определил контроллер
(function(){
'use strict';
angular.module('app.property')
.controller('PropertyCtrl',PropertyCtrl);
PropertyCtrl.$inject = ['dataservice'];
function PropertyCtrl(dataservice) {
var vm = this;
vm.listings = [];
activate();
function activate() {
return getListing().then(function(){});
}
function getListing(){
return dataservice.getListing().then(function(data){
vm.listings = data;
console.log("data is");
console.log(data);
return vm.listings;
});
}
}
})();
Ошибка, которую я получаю на выходе консоли:
Ошибка: dataservice.getListing (...) не определено, за исключением, когда я инспектировать DataService в хроме можно увидеть
Далее я получаю
TypeError: Cannot read property 'then' of undefined
TypeError: def.resolve is not a function
Несмотря на эти ошибки удаленный вызов возвращает JSon штраф.
Надеясь, что у кого-то с угловыми отбивными есть идея, где я пошла не так.
вниз избиратели делают комментарии причину и так, что я могу улучшить. – mohamedrias
Я не проголосовал за это, но я не думаю, что это была проблема ОП. Это может быть проблема * A * с его кодом, но я не думаю, что это было причиной ошибки, о которой он упомянул. – tpie
Если вы видите ошибку, которую получает OP, 'Can not read property 'then' of undefined', которая связана с отсрочкой. Но в dataservice getlisting() имеется. Так что ясно, что из-за этого – mohamedrias