Вы можете использовать решение и отказаться, чтобы контролировать поток ваших данных:
Допустим, у вас есть услуга, как это:
var app = angular.module("mymodule.services", []);
app.factory("HttpRequest", ['$q', '$http', function(q, http) {
var deferredData = q.defer();
http.get('http://your-server.local/data.json').success(function(data) {
//success, resolve your promise here
deferredData.resolve(data);
}).error(function(err) {
//error, use reject here
deferredData.reject(err);
});
return {
get: function() {
return deferredData.promise;
}
};
}]);
Услуга может затем быть используемые как таковые:
var app = angular.module("mymodule.controllers", ['mymodule.services']);
app.controller("MyCtrl", ['HttpRequest', '$scope', function(res, scope) {
//the "then"-method of promises takes two functions as arguments, a success and an erro callback
res.get().then(function(data) {
//first one is the success callback
scope.data = data;
},
function(err) {
scope.err = err;
});
}]);
Вы можете обработать ошибку во втором обратном вызове.
ли promise.reject() вместо $ q.reject(); –
Я получаю следующее сообщение об ошибке: Объект #
ли проверка на isString имеет какое-либо отношение к функции $ http после этого? Пожалуйста, упростите вашу ссылку – nXqd