AngularJS的等价物是什么?它对应于Backbone中的Collections。

10
在Angular JS中是否有与Backbone's CollectionExt 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);

这样的东西存在吗?$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');
    }
};

如果这个难以捉摸的“集合”存在,我想他们应该会使用它。相反,他们正在手动管理一个数组。

为什么?Angular的一个优点是你可以使用POJO(普通的JavaScript对象)进行工作。 - elclanrs
1
这样的东西存在吗?没有,Angular没有模型或集合。我建议在问更多问题之前先完成文档中的教程。 - mpm
2
感谢您的回答,@mpm。我已经完成了教程并阅读了所有开发者指南,但仍不清楚。这就是为什么我提出问题的原因。 - reergymerej
1
没有什么阻止你在Angular服务中使用Backbone模型和集合。拥有真正的模型层非常重要。将随机哈希值发送回服务器不是最佳实践。但是,在我看来,您需要使用AngularJS Ajax API覆盖Backbone同步。 - mpm
1个回答

4
AngularJS不定义任何类型的结构化数据模型。这部分完全由您自己决定。 $resource服务只是在低级别的$http服务上的一个包装器;它定义了一种高级方法,从服务器中获取您的数据,并且与您在前端如何组织数据没有太大关系。
如果您的应用程序需要更复杂的前端数据模型,则应研究其他JS库或自己编写。然而,Angular的单例服务和强大的双向数据绑定使得对于大多数小/中型应用程序来说,这是不必要的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接