什么是AngularJS等同于Backbone的集合?

ree*_*rej 10 javascript angularjs backbone.js-collections extjs-stores angular-resource

在Angular JS中是否有相当于Backbone的CollectionExt 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);
  });
};
Run Code Online (Sandbox Code Playgroud)

说明

$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);
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?$ 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');
    }
};
Run Code Online (Sandbox Code Playgroud)

如果这个难以捉摸的"集合"存在,我想他们会使用它.相反,他们手动管理阵列.

Eva*_*wry 4

AngularJS 没有定义任何类型的结构化数据模型。这部分完全取决于您。

$resource 服务只是较低级别 $http 服务之上的包装器;它定义了一种从服务器获取数据的高级方法,与如何在前端构建数据几乎没有关系。

如果您的应用程序需要更复杂的前端数据模型,您应该研究其他 JS 库或推出自己的库。然而,Angular 的单例服务和强大的双向数据绑定使得这对于大多数中小型应用程序来说是不必要的。