我有一个模型,我从服务器获取然后渲染视图。我应该使用模型的更改事件将对区域的show方法的调用绑定吗?
menuModel.bind("change" , function(){
leftMenuRegion.show(leftMenu);
});
menuModel.fetch();
但是当再次获取模型时会发生什么? 或者我应该第一次获取模型,调用区域的show方法然后将视图的渲染方法绑定到模型的更改事件?
menuModel.fetch();
leftMenuRegion.show(leftMenu);
menuModel.bind("change" , function(){
leftMenu.render();
});
此外,请在下面的实例化视图时,请咨询是否在这种情况下,是否可以/建议听模型的变更事件。
initialize : function() {
this.bindTo(this.model, 'change', this.render, this);
},
通过调用区域的节目和有时候视图的渲染来渲染视图是不是不一致?请告知编码标准应该是什么?
答案 0 :(得分:3)
视图显示模型,应该是监听“更改”事件的模型。您可以使用initialize
方法(在视图中)执行此操作:
initialize : function() {
this.listenTo(this.model, 'change', this.render);
}
您只能使用区域show
方法来指示该区域应显示的视图。除非您想在该区域中显示不同的视图,否则不要再次调用它。
要等待在显示视图之前获取模型数据,您可以使用延迟,如下所述:http://davidsulc.com/blog/2013/04/01/using-jquery-promises-to-render-backbone-views-after-fetching-data/(注意fetch
返回一个延迟对象,因此您可以使用价值作为你的承诺)。
要仅调用render
一次,请使用延迟来延迟显示区域中的视图。然后,调用menuModel.fetch({ silent: true });
,这将阻止在收到数据时触发“更改”事件。