Есть ли эквивалент Макетная коллекция или 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');
}
};
Если бы эта неуловимая "коллекция" существовала, я полагаю, они бы ее использовали. Вместо этого они управляют массивом вручную.