【发布时间】:2020-02-15 17:36:53
【问题描述】:
我有以下带有多个绑定的函数...
showDialog: function(data) {
var dialog = new dialog({
onOk: function(text) {
var obj = {
data: text.data
};
this.model.save(obj, {
method: 'PUT',
success: function() {
this.success().bind(this)
}.bind(this)
});
}.bind(this)
});
Main.dialogArea.show(dialog);
}
虽然代码可以运行,但它会在控制台中抛出以下错误...
未捕获的类型错误:无法读取未定义的属性“绑定”
错误与以下行this.success().bind(this)有关。
我意识到如果我改用var self = this,这个问题就会得到解决...
showDialog: function(data) {
var self = this;
var dialog = new dialog({
onOk: function(text) {
var obj = {
data: text.data
};
self.model.save(obj, {
method: 'PUT',
success: function() {
self.success()
}
});
}
});
Main.dialogArea.show(dialog);
}
如果我这样做,错误就会消失。知道为什么会这样吗?两种情况不应该一样吗?我没有使用 ES6,所以我不能使用箭头函数,我想使用 bind()。
【问题讨论】:
标签: javascript backbone.js binding