0

私はバックボーンアプリに取り組んでいます。mousedown関数を呼び出すバックボーンを使用してイベントを追加していselectます。関数内では、別の関数を呼び出すselect設定をしています。関数では、を使用してコンソールしたい。ただし、this は現在のモジュールを参照していないため、未定義です。選択関数で使用できるように、このキーワードを保持するにはどうすればよいですか?timeoutselectionselectioncurrently clicked elementconsole.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);
    }
4

2 に答える 2

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);
}
于 2013-04-23T06:22:29.643 に答える
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

于 2013-04-23T06:20:53.107 に答える