Use Case:данных объект переменных в угловой службе обновления через AJAX вызов
Я хочу создать службу в угловом, который возвратит мне объект данных, который является переменным внутри службы, который обновляется один раз с помощью ajax-вызов.
Впервые, если данные не получены через ajax, он вернет {}. После получения данных он всегда будет возвращать эти данные.
Выпуск
Данные принимаются надлежащим образом в Ajax. Структура полученных данных - это объект. Я проверил его, войдя в консоль. Но в следующий раз, когда эта служба называется, она снова вызывает ajax, поскольку переменная внутри службы не обновляется.
Может ли кто-нибудь предложить, почему это происходит, и какой бы простой способ достичь выше?
Код:
angular.module('myapp', []).service('TagService', function ($http, CONSTANTS) {
this.tagsData = {};
this.getTagsData = function (cacheMode) {
if (JSON.stringify(this.tagsData) != "{}") {
console.log("returning from cache");
return this.tagsData;
}
$http({
method: 'GET',
url: CONSTANTS['base_url_s'] + 'api/v1/get_all_tags_data/',
params: {'params': JSON.stringify({})}
}).success(
function (data, status, headers, config) {
if (data && data["success"] && data["success"] == true) {
this.tagsData = data["data"];
}
return this.tagsData;
}).error(
function (data, status, headers, config) {
return {};
});
};
});
Спасибо за такой большой response..really оценить его !! – abhinsit
Ваше решение отлично работает, но для случая if (JSON.stringify (this.tagsData)! = "{}") { console.log ("возврат из кеша"); return defer.resolve (tagsData); } он не работает .... это говорит о неопределенной функции TagService.getTagsData – abhinsit
Впервые до данных {} он вызывает ajax возвращает обещание, которое хорошо работает, но после этого, когда оно вызывается снова и должно возвращать данные непосредственно он выдает ошибку: TagService.getTagsData (...) не определено – abhinsit