Backbone多个集合获取和渲染

时间:2014-09-22 17:24:01

标签: backbone.js

我正在开发一个Backbone应用程序。

我有一个名为“Dashboard”的视图。在此仪表板视图中,我将获取两个数据集合;一个用于文章表中最近文章的列表,另一个用于作者表中的作者列表。

请注意我在mySQL数据库中有两个不同的表,我使用SlimPHP Api进行查询和检索数据。

我也在使用Handlebars模板化Javascript库来编译HTML。

问题: 我的问题是,制作两个查询的最佳方法是什么,然后将两个集合数据发送到Handlebars编译,这将创建HTML(在循环通过集合模型之后)并最终被带入渲染函数。

这是我到目前为止所尝试的(仪表板查看Javascript文件):

http://jsfiddle.net/n6c3q16r/2/

我尝试获取两个模型数据并将其传递到jsFiddle上第17行的渲染函数中:

this.$el.html(this.template(this.collection, this.topAuthorsCollection));

但这不起作用。

2 个答案:

答案 0 :(得分:0)

您可以使用承诺。在这种情况下,我个人最喜欢的是jQuery.when

$.when(collection1.fetch(),collection2.fetch()).done(function(){
         //Do stuff here
});

API - http://api.jquery.com/jquery.when/

更新了小提琴 - http://jsfiddle.net/n6c3q16r/4/

答案 1 :(得分:0)

试试这个:

initialize: function() {
    this.listenTo(this.topAuthorsCollection, 'reset', this.render);
    this.topAuthors = new topAuthorsModel();
    this.topAuthorsCollection = new topAuthorsCollection({model: this.topAuthors});
    this.collection.fetch({
        reset: true,
        success: function() {
            this.topAuthorsCollection.fetch({reset: true})
        }
    });

}