在Ang JS中有相当于
Backbone’s Collection还是
Ext JS’s Store?我正在学习
$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);
这样的事情存在吗? $资源文件提到一个集合,但我没有真正得到它. This answer似乎很有希望,但没有解释收藏的想法.我错过了什么,还是没有想到这个角度呢?
附录
在mean.io样板中,the article controller表示“收集”是手动管理的(见下面的拼接).
$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');
}
};
如果这个难以捉摸的“收藏”存在,我想他们会使用它.而是手动管理数组.
解决方法
AngularJS没有定义任何类型的结构化数据模型.这部分完全取决于你.
$资源服务只是低层$http服务的封装;它定义了从服务器获取数据的高级方法,与前端数据结构的关系很小.
如果您的应用程序需要更复杂的前端数据模型,则应调查其他JS库或自行滚动.然而,角度的单身服务和强大的双向数据绑定使得大多数小型/中型应用程序变得不必要.