1

我有一个模型,我从服务器获取然后渲染视图。我应该使用模型的更改事件绑定对我区域的 show 方法的调用吗?

  menuModel.bind("change" , function(){
            leftMenuRegion.show(leftMenu);
        });
        menuModel.fetch();

但是当再次获取模型时会发生什么?或者我应该第一次获取模型,调用区域的显示方法,然后将视图的渲染方法绑定到模型的更改事件?

  menuModel.fetch(); 
  leftMenuRegion.show(leftMenu);     
  menuModel.bind("change" , function(){
                leftMenu.render();
   });

此外,请告知在这种情况下,是否有可能/建议在实例化视图时听取模型的更改事件,如下所示。

initialize : function() {
  this.bindTo(this.model, 'change', this.render, this);
},

有时通过调用区域的显示和有时视图的渲染来渲染视图是否不一致?请建议应该是什么编码标准?

4

1 回答 1

3

视图显示模型,应该是监听“更改”事件的视图。您可以在initialize方法中(在视图中)这样做:

initialize : function() {
  this.listenTo(this.model, 'change', this.render);
}

您只使用区域show方法来指示该区域应显示的视图。除非您想在该区域显示不同的视图,否则您不会再次调用它。

要在显示视图之前等待获取模型数据,您可以使用延迟,如下所述:http: //davidsulc.com/blog/2013/04/01/using-jquery-promises-to-render- bone-views-after-fetching-data/(请注意,它fetch返回一个延迟对象,因此您可以使用该值作为您的承诺)。

render只调用一次,请使用 deferred 来延迟在区域中显示视图。然后,调用menuModel.fetch({ silent: true });这将防止在接收到数据时触发“更改”事件。

于 2013-07-08T21:04:40.183 回答