2016-12-30 7 views
1

jstree checkboxプラグインに取り組んでいます。チェックボックス項目のチェックされた状態とチェックされていない状態を取得したいと思います。 changed.jstreeイベントは、_setEvents()メソッドでは機能していません。しかし、_setTree()メソッドの内部でイベントを追加するとうまくいきます。 _setEvents()メソッドでイベントトリガーを取得する必要があります。これを解決するために私を助けてください。changed.jstreeイベントがクラスメソッド内のjstree内で機能していません

これは私が使用していたコードです:あなたは動的js-categories-container要素を追加しているので

export default class Test { 
    constructor(container) { 
    this._tab = null; 
    this._container = container; 
    this._setEvents(); 
    } 

    get tab() { 
    return this._tab; 
    } 

    show(data) { 
    this._data = data; 
    this._setTree();  

    return this; 
    } 


    _setEvents() { 
    const self = this; 

    $(document) 

     .on('click', '#js-image-container',() => { 
     $('#js-image-uploader').trigger('click'); 
     }); 
     $('#js-categories-container').on('changed.jstree',() => this._handleSelection());//this wont work 

    return this; 
    } 


    _setTree() { 
    $('#js-categories-container').jstree(jsonTreeGenerator.generate(this._data.categories)); 
    $('#js-categories-container').on('changed.jstree',() => this._handleSelection()); //this will work 
    return this; 
    } 
    _handleSelection() { 
    alert(1); 
    } 
} 
+0

- https://fiddle.jshell.net/ermakovnikolay/4b8ehrx8/:Fiddle Demo - デモを確認してください。 htmlをビルドしてすべてのlibsをロードした後で、このスクリプトを呼び出すことはできますか?木はまったく見えますか? –

+0

私の質問には編集があり、私はクラスと2つのメソッドを使用しています。イベントのための1つのメソッドとjstreeをトリガーするための1つのメソッド。 _setEvents()メソッド内のすべてのイベントをトリガーしたいと思います。私は仕事に入ることができません。 –

+0

'js-categories-container'要素を動的に追加していますか? –

答えて

0

、私はそれはあなたがそれにイベントをバインドする時にはまだ存在していないと信じています。したがって、イベント処理を委任する必要があります。 js-image-container要素の場合と同じ方法です。私のために働いた

$(document).on('click', '#js-image-container', 
    () => { $('#js-image-uploader').trigger('click'); } 
); 

$(document).on("click", '#js-categories-container', 
    () => { 
     // get the node if you need it 
     var node = $('#js-categories-container').jstree().get_node(event.target); 
     // do something 
     this._handleSelection(); 
    } 
); 
+0

$(document).on( 'changed.jstree'、 '#js-categories-container'、 ()=> {this._handleSelection();} )を追加しました。 _setEvents()メソッドの内部しかし、それは私のために働いていません。 –

+0

はい、そうです。私は答えを –

+0

更新しました。それはうまくいった。ありがとうございました。 –

関連する問題