Что такое эквивалент AngularJS для базовых коллекций?

Есть ли эквивалент Макетная коллекция или Ext JS Store в Angular JS? Я узнал о $resource, но не совсем понял этот аспект.

контроллер

// This is the "collection" I'm interested in.
$scope.foos = [];

// Foo is a $resource.
Foo.query(function (foos) {

  // This works, but is there a smarter "collection" object?
  $scope.foos = foos;
});

$scope.createFoo = function (data) {
  var foo = new Foo(data);

  foo.$save(function (shinyNewFoo) {
    $scope.foos.unshift(shinyNewFoo);
  });
};

Описание

В $scope.createFoo Я создаю новый Foo, сохраняя его, а затем добавляя его в свою коллекцию бедных людей, массив. Это работает, и представление обновляется правильно, но я слишком ленив для этого. В идеале, я хотел бы иметь "коллекцию", которую я могу добавить и удалить, из которой автоматически будет POST/DELETE. Может быть, что-то вроде следующего.

Притворная реализация

$scope.fooCollection = new CoolCollection({
  // specify the type of resources this collection will contain
  itemsResource: Foo
});

// Creates new Foo, saves, adds to collection.
$scope.fooCollection.add(data);

Есть ли что-то подобное? Документы $resource упоминают коллекцию, но я ее действительно не понял. Этот ответ казался многообещающим, но не объяснял идею собрания. Я что-то пропустил или просто не думал об этом Angular?


Добавление

В шаблоне MEAN.io контроллер статьи предлагает, чтобы "сбор" управлялся вручную (см. ниже splice),.

$scope.remove = function(article) {
    if (article) {
        article.$remove();

        for (var i in $scope.articles) {
            if ($scope.articles[i] === article) {
                $scope.articles.splice(i, 1);
            }
        }
    } else {
        $scope.article.$remove();
        $location.path('articles');
    }
};

Если бы эта неуловимая "коллекция" существовала, я полагаю, они бы ее использовали. Вместо этого они управляют массивом вручную.

Ответ 1

AngularJS не определяет какую-либо модель структурированных данных. Эта часть полностью зависит от вас.

Служба $resource - это всего лишь оболочка поверх сервиса $http более низкого уровня; он определяет способ высокого уровня для извлечения ваших данных с сервера и имеет мало общего с тем, как вы структурируете свои данные в интерфейсе.

Если для вашего приложения требуется более сложная модель данных frontend, вам следует исследовать другие JS-библиотеки или сворачивать свои собственные. Тем не менее, службы angular singleton и мощная двусторонняя привязка данных делают это ненужным для большинства малых/средних приложений.