Я пытаюсь подсчитать количество элементов, возвращаемых из $resouce.query()
, чтобы я мог увеличить его и использовать в качестве идентификатора для следующего объекта, который будет сохранен.
Ниже приведена служба связи с сервером:
eventsApp.factory('EventData', function($resource) {
var resource = $resource('/data/event/:id', {id: '@id'});
return {
getEvent: function(eventId) {
return resource.get({id: eventId});
},
saveEvent: function(event) {
var count = 0;
resource.query(function(data) {
count = data.length; // Accessible here!
});
event.id = count; // Not accessible here!
return resource.save(event);
},
getAllEvents: function() {
var count = 0;
var lol = resource.query(function(data) {
count = data.length;
});
console.log(count);
return resource.query();
}
}
});
Однако, как упоминалось в комментариях, я не могу получить доступ к свойству length
. Любые решения?
Глядя на ваш код, что я получаю ваш resource.query
выполняет функцию обратного вызова в асинхронном режиме из - за того, что ваш event.id = count;
выполняется сначала, а затем выполняется обратный вызов. Если вы хотите получить доступ к data.length, вы можете использовать $q
и создать отсрочку. И затем разрешите этот отложенный объект.