Backbone - 在多个事件之后渲染视图

时间:2015-04-21 10:33:42

标签: javascript backbone.js

我有一个Backbone View我想在两个不同的事件发生后才渲染。这两个事件是从服务器填充的两个不同Collections(这是填充两个下拉选择列表)。

我的两个CollectionscFilterFieldscFilterOperators,并且都有一个自定义.populate()方法,可以调用.fetch()并触发populated个事件。< / p>

这就是我所拥有的:

var MyView = Backbone.View.extend({
    tagName: 'div',
    initialize: function(){
        _.bindAll(this,'render');

        this.fields = new cFilterFields();
        this.operators = new cFilterOperators();

        this.fields.populate();
        this.operators.populate();

        this.listenTo(this.fields,'populated',function(){
            // ...
        });
        this.listenTo(this.operators,'populated',function(){
            // ...
        });

    },
    events: {},
    render: function(){
        // ...
        return this;
    }
});

View个事件被解雇时,呈现此Collection的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

拥有收藏品&#39; populate方法返回promises,然后使用jQuery.when

您的初始化应该看起来像这样

$.when(fields.populate(), operators.populate())
  .done(_.bind(function() {
      this.render();
  }, this));

此解决方案假定使用JQuery和下划线,因为它们都是Backbone的依赖项。

答案 1 :(得分:0)

刚刚完成它,很简单,你只是这样做:

this.listenTo(this.fields && this.operators,'populated',function(){
    this.render();
});

<强>更新

请勿使用此功能,请参阅下面的评论,我将接受正确答案。