当MongoDB集合长度发生变化时,动态更新Angular View

时间:2015-08-17 00:06:03

标签: angularjs mongodb

我只是想知道Angular如何监视Mongo DB中数据库集合的变化。我有一个变量跟踪我的MongoDB集合中的项目数量,我希望前端视图在从前端添加到集合中时立即插入数字。这可能吗?

示例:

var Item = $resource('/api/items'),
    allItems = Item.query(function(results) {
        return results;
    });

$scope.allTodos = allItems.length;

前端:

<p ng-show="allTodos > 0">Total Items: {{allTodos}}</p>

我们假设我有一些方法可以通过前端的表单添加项目,并将它们提交到数据库。当我添加新项目时,{{allTodos}}数字如何立即动态增加(++)?在Backbone.js中,我知道有收集监视事件,即:

var Collection = Backbone.collection.extend({
    //code...
}),
    c1         = new Collection();

c1.bind("add", function() {
    //do something when you add it to the collection
});

Angular有可能吗?我确定是的,所以请原谅我的绿色。谢谢!

1 个答案:

答案 0 :(得分:0)

$resource.query立即返回一个空对象。所以allItems不是你所期望的。操作完成后,allItems将填充数据。无需从回调中返回任何内容

一种方法是在回调中设置allTodos

Item.query(function(results) {
        $scope.allTodos = results.length;
    });

或完全消除额外变量allTodos,使项目在模板中可见(应该是控制器$scope的一部分)。

var Item = $resource('/api/items');
$scope.allItems = Item.query();

并在html中

<p ng-show="allItems.length > 0">Total Items: {{allItems.length}}</p>