DM.Backbone.View.feedback = Backbone.View.extend( {
initialize: function (){
this.render( this.model.get( 'data' ) || [] );
},
render: function ( param ){
if ( $( '.problem_report_reply' ).length > 0 ) {
_.bind( this.mail_to, this );
$( '.problem_report_reply' ).off().on( 'click', this.mail_to )
}
},
mail_to: function (){
console.log( 'this', this )
} );
这里是 Backbone.View 的代码。我有绑定方法到DOM元素的问题, console.log 显示这个像我点击的DOM元素。我使用非核心方法 _。bind 来纠正绑定这个,这有什么问题?
答案 0 :(得分:2)
_.bind
创建一个新函数,它不会修改现有函数。你可以像这样使用它
render: function ( param ){
var func;
if ( $( '.problem_report_reply' ).length > 0 ) {
func = _.bind(this.mail_to, this);
$('.problem_report_reply').off().on('click', func);
}
}
或者使用_.bindAll
,它会修改对象中的函数
DM.Backbone.View.feedback = Backbone.View.extend({
initialize: function (){
_.bindAll(this, "mail_to");
this.render( this.model.get( 'data' ) || [] );
},
render: function ( param ){
if ( $( '.problem_report_reply' ).length > 0 ) {
$( '.problem_report_reply' ).off().on('click', this.mail_to)
}
},
mail_to: function (){
console.log( 'this', this )
}
});