Попытка получить данные с фабрики и передать ее в контроллер, чтобы затем использовать ее в ng-повторе. Не уверен, почему, но контроллер никогда не запускает функцию, установленную на заводе.Невозможно получить данные о угловых фабриках в контроллере
Контроллер
angular.module('myApp').controller('AppController',['$scope','ItemsFactory',
function($scope,ItemsFactory){
ItemsFactory.getItems(function(err, data){
$scope.items = data;
console.log('controller items', $scope.items);
});
}]);
завод
angular.module('myApp').factory('ItemsFactory', function($http){
var getItems = function(){
$http({
method: 'GET',
url: 'js/data/data.min.json'
}).then(function success(response, data){
var results = response.data;
console.log('factory results', results);
}, function error(response){
console.log('error getting items');
});
};
return{
getItems: getItems
};
});
Вслед за несколько других примеров отвечал, но ничего не похоже на работу либо
- inject factory data into controller angular.js
- Service process http.get results into new array and return to calling controller
- inject factory data into controller angular.js
Результаты возвращаются на заводе, просто не в состоянии передать, что через к контроллеру
Редактировать
Искренне благодарю вас всех за ваши ответы, как они были все чрезвычайно полезно, проработано и пролило много света на обещания и обратные вызовы.
Решил использовать @Fernando Fabreti ответ, поскольку он был как можно ближе к тому, что я искал.
завод
angular.module('myApp').factory('ItemsFactory', function($http){
var getItems = function(callback){
$http({
method: 'GET',
url: 'js/data/data.min.json'
}).then(function success(response, data){
var results = response.data;
if(callback) callback(null, results);
}, function error(response){
console.log('error getting items');
});
};
return{
getItems: getItems
};
});
Контроллер
angular.module('myApp').controller('AppController',['$scope','ItemsFactory',
function($scope, ItemsFactory){
ItemsFactory.getItems(function(err, data){
$scope.items = data;
console.log('controller items', $scope.items);
});
}]);
Спасибо за ответ, путаясь на возвраты и посылов. –
Much cleaner, используя обещание '$ http' – charlietfl