Backbone模型不会立即获取响应,而是首先呈现视图

时间:2013-05-13 10:07:52

标签: backbone.js model

我使用解析函数进行建模

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 

这是为什么?根据{{​​3}}:

  只要集合的模型是,Backbone就会调用

解析   由服务器返回,在fetch中。

为什么在获取模型后没有直接调用解析函数?怎么强迫它这样做?

1 个答案:

答案 0 :(得分:1)

是的,但是您正在对服务器进行异步调用以获取模型,因此渲染实际上被称为,然后才能获得答案。你必须这样做:

this.file.fetch({success: function () { 
    //call render here
}});