自动更新主干下划线模板

时间:2015-09-02 05:22:55

标签: javascript templates backbone.js underscore.js

我有一个骨干集合,它使用fetch方法从服务器获取一个对象数组,我想要做的就是遍历模板中的每个对象并读取它的属性。以下是集合和模板

APP.MyObjects = Backbone.Collection.extend({
    url: '/api/objects/',
    model: APP.MyObject,
    initialize: function() {
        this.fetch();
    }
});
APP.myObjects = new APP.MyObjects(); // Fetches the data

现在在模板中我要做的是:

<% _.each(APP.myObjects.toJSON(), function(obj) {%>
    <%= obj.title %>
<% }); %>

我面临的问题是Collection.fetch调用是异步的,因此在呈现模板时,APP.myObjects.toJSON的长度为0。因此,我无法查看对象属性,甚至在异步提取调用完成后,模板也不会更新。

问题

如何在更新或更改APP.myObjects列表时自动更新模板?在Angular中,我们使用watch来实现我想要达到的目标,我对骨干和下划线都很新,所以我想知道实现这一目标的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

我只需要在视图的initialize方法中添加此行,以确保在更新后重新呈现模板。

MyObjectListView = Backbone.View.extend({
    initialize: function(){
        this.listenTo(APP.myObjects, 'update', this.render);
    }
});