AngularJS Подсчет объектов в папке, возвращаемой ngResource

Я изучаю AngularJS, и у меня есть, как мне кажется, простая проблема.

Я использую $Resource для получения объектов json из папки, и мне нужно иметь количество объектов в папке. Мне удалось получить искомое значение в операторе обратного вызова в функции сохранения, но я делаю что-то не так и не могу вернуть его туда, где мне нужно его использовать. Я использую счетчик как способ автоматического увеличения идентификатора для файлов, созданных в папке.

У меня есть комментарии в коде относительно того, где я могу получить доступ к значению и где мне нужно получить к нему доступ, все это в функции сохранения.

Любая помощь будет принята с благодарностью.

Мой сервис:

eventsApp.factory('eventData', function($resource) {
var resource = $resource('/data/event/:id', {id: '@id'}, {"getAll": {method: "GET", isArray:true, params: {something: "foo"}}});
return {
    getEvent: function(eventId) {
        return resource.get({id:eventId});
    },
    save: function(event) {

        resource.query(function(data){ 
                       console.log("Event ID In: " + data.length); //value is accessible here
                      });

        event.id = ; //need to access value here
        return resource.save(event);


    },
    getAllEvents: function() {

        return resource.query();
    }
};

});

Спасибо


person Barry Thomas    schedule 07.11.2014    source источник


Ответы (1)


Вы можете сделать это так, без необходимости обертки вокруг $resource

eventsApp.factory('eventData', function($resource) {
    return $resource('/data/event/:id');
});

Затем в том месте, где вы используете свою фабрику (например, код контроллера), вы можете определить функцию для этого поведения.

function saveEvent(event) {
    eventData.query(function(data){ 
        console.log("Event ID In: " + data.length); //value is accessible here
        event.id = data.length;
        eventData.save(event);
    });
}

Но я думаю, вам следует пересмотреть дизайн вашей базы данных. Постоянное подключение сохранения с запросом мне кажется не эффективным решением.

person Jonas    schedule 07.11.2014
comment
Спасибо, мне пришлось внести некоторые другие изменения, чтобы остальной функционал заработал, но в итоге я его получил. Это всего лишь урок, который я прохожу, и я хотел добавить что-то еще, чего в нем не было. Спасибо еще раз - person Barry Thomas; 08.11.2014
comment
@BarryThomas Без проблем, пожалуйста. $resource — действительно отличный кусок углового, который может сэкономить несколько строк кода. Пожалуйста, примите мой ответ, если он вам помог. - person Jonas; 08.11.2014
comment
Я с @Jeyp. Я делаю это впервые, и я все думал, как получить идентификатор счетчика для каждого документа. Что я собираюсь сделать: - При открытии страницы, где находится форма создания/сохранения, я сделаю запрос, после чего узнаю количество документов перед началом создания/сохранения. И делайте, как говорит Jeyp: event.id = data.length; - person Despertaweb; 12.10.2016