我使用解析函数进行建模
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中。
为什么在获取模型后没有直接调用解析函数?怎么强迫它这样做?
答案 0 :(得分:1)
是的,但是您正在对服务器进行异步调用以获取模型,因此渲染实际上被称为,然后才能获得答案。你必须这样做:
this.file.fetch({success: function () {
//call render here
}});