gpt4 book ai didi

javascript - Backbone.js 从事件处理程序调用函数渲染

转载 作者:行者123 更新时间:2023-11-28 19:57:55 25 4
gpt4 key购买 nike

我的观点是这样的:

render:function(){
this.template = _.template(tpl.get('tplUsersManagement'));
this.$el.html(this.template({models : this.model.models}));
this.$el.i18n();
$('#formAddUser')
.on('invalid', function () {
var invalid_fields = $(this).find('[data-invalid]');
console.log(invalid_fields);
})
.on('valid', this.addUser);
return this;
},
addUser: function(event){
event.preventDefault();
var newUser = new UserModel({
. . .
});
var that=this;
newUser.save({},{
headers:{"X-Token":"theToken"},
statusCode:{
202: function(){
that.render();//here I want to call render function
}
}});
}

}

所以我想从我的 addUser 函数调用我的渲染函数。我尝试用 this=that 然后 that.render 来做到这一点,但我收到一个错误,它说:

Uncaught TypeError: Object # has no method 'render'

我认为这是因为在事件处理程序中这成为了我的表单。

最佳答案

您已经意识到上下文约束,这就是您使用 var that = this 技巧的原因,但您还需要在另一个地方实现它:

var self = this; // I prefer "self" rather than "that" 
$('#formAddUser').on('invalid', function () {
// handle invalid data
}).on('valid', function( ev ){
ev.preventDefault();
self.addUser();
return this;
});

addUser 函数是 View 模块的一部分,但在 valid/invalid 事件处理程序中,上下文(this 变量)被改变了。在进入事件处理程序的范围之前,您需要保留正确上下文的引用 (var self = this;),以便可以使用它来调用 addUser() 函数。

关于javascript - Backbone.js 从事件处理程序调用函数渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com