Ваш код можно переписать следующим образом:
app.factory('jsonFactory',function ($http) {
var factory = {};
factory.getCustomers = function () {
return $http({
method: 'GET',
url: `https://jsonplaceholder.typicode.com/todos`
}).then(function (response) {
return response.data;
});
}
return factory;
})
Прежде всего - не нужно лишних Promise
, потому что $http
уже обещание!
Повторно, нетнужно позвонить $scope.$apply
.Если вы хотите, чтобы при вызове контроллера вызывался какой-либо сервисный метод, вам лучше создать функцию activate
, которая имеет смысл семантически.
app.controller('JsonController', ['$scope','jsonFactory', function ($scope, jsonFactory) {
function activate() {
jsonFactory.getCustomers().then(function (data) {
$scope.customers = data;
});
}
activate();
}]);
Вот хорошая статья о том, когда вынадо позвонить $apply
и как.