2017-09-29 18 views
1

私はインラインonclickハンドラを使用しようとしていますが、DOM要素自体のものではなく、このコンテキストにバインドする必要がありますが、私の人生にとってはこれを得ることができません仕事:htmlインラインonclickハンドラをバインドするにはどうすればよいですか?

onclick="${this._sortTable.bind(this, i)};" 

正しい軌道に乗ってください。

私はテンプレートリテラルでES6を使用してい

var container = `<div class="column" style="flex: 0 0 ${WIDTH} !important" data-index="${columnObject.index}" onclick="${this._sortTable.bind(this, i)};">${columnObject.title}</div>`; 

私は次のエラーを受信して​​います:

Uncaught SyntaxError: Unexpected token (

DOM要素は間違いなく奇妙に見える:

<div class="column" style="flex: 0 0 5.555555555555555% !important" data-index="column7" onclick="function() { [native code] };">COLUMN7</div> 
+0

javascriptだけでなく、いくつかの図書館があるようです...彼らが何であるか教えていただけますか? – theGleep

+0

@theGleep OPのコードに必ずライブラリが含まれている必要はありません – guest271314

+0

これは、onclickハンドラの解釈方法に大きな影響を与える可能性があります。 – theGleep

答えて

0

あなたはclassstatic機能として_sortableを定義することができますそのコードで

class FN { 
 
    constructor(prop) { 
 
    const div = `<div onclick="FN._sortable(${prop})">click</div>`; 
 
    console.log(div); 
 
    document.body.innerHTML += div; 
 
    } 
 
    static _sortable(n) { 
 
    console.log(n) 
 
    } 
 
} 
 

 
let c = new FN(123);

+0

良いアイデアだが、私たちの環境ではうまくいかない。 FNは未定義に戻ります。グローバルな状況に物事を乗り越えるには、多くの官僚的な決定と多大な努力が必要です。私はこれを回避する別の方法を考え出すでしょう。しかし、アイデアをありがとう。 – stevelacerda7

0

、あなたはそれをDOMに挿入されます文字列として「バインド」の出力を処理しようとしています。

最も明白な解決策は、最初にDOMオブジェクトを作成してから、ハンドラをオブジェクトにアタッチしてからオブジェクトをDOMに挿入することです。

"this"オブジェクトへのアクセスを取得するために、特に "私"エイリアスを作成した場合は、bindを使用する必要はないかもしれません。

+0

それを試して、それを動作させることができませんでした。最終的に、私は問題を抱えている外部のイベントハンドラを追加する必要がありました。リーフレットを使用していますので、リーフレットのレイヤーの上にイベントハンドラを追加する際に問題があります。とにかく、それはまったく別の問題です。私は簡単な回避策を望んでいましたが、今のところは行っていません。しかし、アイデアをありがとう。 – stevelacerda7

関連する問題