我正在使用Backbone和bootbox。 这是我在视图中的代码:
confirm : function(result) {
if (result === true) {
var that = this;
this.model.set({completed: '1'}); // Exception here
this.model.save(
null, {
success: function (model, response) {
Backbone.history.navigate("index", true);
},
error: function(model, response) {
that.model.set({completed: '0'});
var responseObj = $.parseJSON(response.responseText);
bootbox.alert(responseObj.message);
}
});
}
},
completeProcess : function(event) {
event.preventDefault();
this.model.set({completed: '1'});
bootbox.confirm("Confirm?", this.confirm );
}
我收到了这个错误:
未捕获的TypeError:无法调用未定义的方法'set'
有没有办法从视图传递引用?
答案 0 :(得分:3)
由于underscore是backbone的依赖关系,您可以使用其_.bind
功能:
_.bind(function, object, [*arguments])
将一个函数绑定到一个对象,这意味着只要该函数是 叫,这个的价值就是对象 可选,通过 预填充函数的参数,也称为partial 应用
在你的情况下,这可能是这样的:
completeProcess : function(event) {
event.preventDefault();
this.model.set({completed: '1'});
bootbox.confirm("Confirm?", _.bind(this.confirm, this));
}
答案 1 :(得分:0)
或者,你可以做这样的事情来坚持原作'这个':
var _this = this;
bootbox.confirm({
message: Message ,
callback: function(result) {
console.log(this + " != " + _this);
},