我无法理解为什么this.model会在view.initialize()中定义,当我在它上面运行this.model.fetch()而不是在view.render()中。
define([
'jquery',
'underscore',
'backbone',
'text!templates/example.html'
], function($, _, Backbone, exampleTemplate){
var exampleView = Backbone.View.extend({
el: $('body'),
initialize: function() {
this.model.set({ _id: this.options.user_id });
this.model.fetch({
success: this.render,
error: function(model, response) {
console.log('ERROR FETCHING MODEL');
console.log(model);
console.log(response);
}
});
},
render: function() {
console.log('HELLO FROM RENDER');
console.log(this.model);
console.log('GOODBYE FROM RENDER');
}
});
return exampleView;
});
答案 0 :(得分:8)
这是因为this
的绑定方式不同,因为渲染被用作回调,将以下行作为initialize
方法的第一行,将this
绑定到render方法的当前视图:
_.bindAll(this,"render");
Underscore.js bindAll function
将methodNames指定的对象上的多个方法绑定到 无论何时调用它们,都要在该对象的上下文中运行。非常 方便用于将用作事件的绑定函数 处理程序,否则会被相当无用的调用。