我正在开发骨干应用程序。我正在使用调用mousedown
函数的骨干添加select
事件。我在select
内设置timeout
,调用另一个函数selection
。在selection
函数中,我想使用currently clicked element
来控制console.log(this.el)
。但是,this.el
未定义,因为这不是指我当前的模块。 如何保留此关键字,以便我可以在选择功能中使用它?
这是我的代码
events: {
'mousedown': 'select',
'mouseup': 'deselect'
},
select: function () {
this.timeoutId = setTimeout(this.selection, 1000);
},
deselect: function () {
clearTimeout(this.timeoutId);
},
selection: function () {
console.log(this.el);
}
答案 0 :(得分:2)
尝试:
var self = this;
self.timeoutId = setTimeout(function () {
self.selection();
}, 1000);
或者:
this.timeoutId = setTimeout(this.selection.bind(this), 1000);
参考 - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind
答案 1 :(得分:2)
你可以这样解决:
select: function() {
var self = this;
this.timeoutId = setTimeout(function() {
self.selection();
}, 1000);
}
许多浏览器也支持bind
函数,它将对象绑定为this
到函数
select: function() {
this.timeoutId = setTimeout(this.selection.bind(this), 1000);
}