Я новичок в AngularJS не глупый, LOL. У меня был этот звонок в контроллере, я хотел переместить его в службу. Мне нужно сделать его доступным для нескольких контроллеров.
$http.post("/admin/Leads/LoadLeads.ashx", dataObj)
.success(function (response) {
$scope.Leads = response.p;
});
Вот что я пробовал. Возврат ответа не может назначить данные таким же образом.
Услуги:
myLeadDashboard.factory('LeadsServiceTest',[function(){
return {
retrievePostData: function($http,dataObj){
return $http.post("/admin/Leads/LoadLeads.ashx", dataObj);
}
}
}]);
Контроллер:
var LeadsPromise = LeadsServiceTest.retrievePostData($http,dataObj);
LeadsPromise.then(function(data) {
$scope.Leads = data.p;
});
Что я делаю неправильно? Что я не понимаю? Если вам нужна дополнительная информация о том, что я делаю, дайте мне знать. Спасибо.
Хорошо тоже привыкнуть к этому сейчас. '$ http' устарел для обработчиков успеха/ошибок: https://docs.angularjs.org/api/ng/service/$http#deprecation-notice – DRobinson
Так что $ q наследует $ http? Как это выглядело бы из стандартов ООП? –
Функции $ http возвращают пользовательское обещание $ q, которое обеспечивает дополнительные функции успеха/ошибки ... поскольку они обесценивают их, вы должны придерживаться результата $ http calls в качестве стандартного обещания $ q. Если вы хотите, чтобы ваша служебная функция возвращала фактические данные, вы могли бы использовать цепочку обещаний: 'return $ http.post (...). Then (function (response) {return response.data;});' –