我有一个Backbone View
我想在两个不同的事件发生后才渲染。这两个事件是从服务器填充的两个不同Collections
(这是填充两个下拉选择列表)。
我的两个Collections
是cFilterFields
和cFilterOperators
,并且都有一个自定义.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
的最佳方法是什么?
答案 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();
});
<强>更新强>
请勿使用此功能,请参阅下面的评论,我将接受正确答案。