0

我用解析函数建模

var File = Backbone.Model.extend({
   ...
   parse: function(response) {
      console.log('Parsing response')
   }
});

var FileView = Backbone.View.extend({
  ...
  initialize: function(id) {
     this.file = new File({id: id.id});
     console.log('Fetching object')
     this.file.fetch();

     this.render();
   },

   render: function() {
      console.log('Rendering view');
      this.$el.html(this.template(this.file.JSON()));
   }
})

预期的结果是:

Fetching object
Parsing response 
Rendering view

但这就是我得到的:

Fetching object
Rendering view
Parsing response 

为什么是这样?根据文档

每当服务器返回集合的模型时,Backbone 都会在 fetch 中调用 parse。

为什么获取模型后不直接调用解析函数?如何强迫它这样做?

4

1 回答 1

1

是的,但是您正在对服务器进行异步调用以获取模型,因此实际上在您得到答案之前调用了渲染。你必须这样做,像这样:

this.file.fetch({success: function () { 
    //call render here
}});
于 2013-05-13T10:21:24.187 回答