web-dev-qa-db-ja.com

JSTreeで複数選択を無効にするが機能しない

次のコードを使用して、アプリケーションでJSTreeを使用しています。

this.CreateTreeView = function () {
    $('#jstree_demo_div').jstree({
        'core': {
            'multiple': false,
            'data': [
               { "id": "ajson1", "parent": "#", "text": "Simple root node" },
               { "id": "ajson2", "parent": "#", "text": "Root node 2" },
               { "id": "ajson3", "parent": "ajson2", "text": "Child 1" },
               { "id": "ajson4", "parent": "ajson2", "text": "Child 2" },
            ]
        }
    });
}

私のコードに示されているように、私は複数選択を無効にしようとしています。

次のコードを使用してノードを選択すると、.

$("#jstree_demo_div").jstree().select_node("ajson3");
$("#jstree_demo_div").jstree().select_node("ajson4");

それでも、両方のノードを選択します。つまり、Javascriptからの複数選択のようになります。

この質問は、JSTreeが正しく機能していることを確認するためだけに行っていますか?

deselect_all関数を使用してノードを選択する前に、すべてのノードの選択を解除できることを知っています。

しかし、私によれば、複数選択がfalseに設定されている場合、javascriptからノードを選択すると、1つのノードのみが選択されます。

私が間違っている場合は私を訂正してください。

12
Nirav Kamani

select_nodeは、multipleの設定に関係なくノードを選択します。

この設定はユーザーの操作のみを制限します。select_nodeは低レベルのメソッドであり、制限されないため、ユーザー(開発者)は制限なしにプログラムで選択を変更できます。

ユーザーの操作によってトリガーされる(したがってmultipleによって制限される)同じ関数を使用する場合は、activate_nodeを使用します。

12
vakata

この構成を使用するだけです

this.CreateTreeView = function () {

    **"plugins" : [
                "checkbox",  
            ],**  

    $('#jstree_demo_div').jstree({
        'core': {
            **'multiple': false,**
            'data': [
               { "id": "ajson1", "parent": "#", "text": "Simple root node" },
               { "id": "ajson2", "parent": "#", "text": "Root node 2" },
               { "id": "ajson3", "parent": "ajson2", "text": "Child 1" },
               { "id": "ajson4", "parent": "ajson2", "text": "Child 2" },
            ]
        },

        **'checkbox' : {            
            'deselect_all': true,
             'three_state' : false, 
        }**

    }); }
'checkbox' : {            
 'deselect_all': true,
 'three_state' : false, 
}

正常に動作します!

0
WEBGONDEL UG

JStreeでチェックボックスの複数選択を無効にするには、このコードも完全に機能します。

   var tmp=null;   /// to prevent recursion
              treeobj.on("check_node.jstree uncheck_node.jstree", function(e, data)                 {
                    if(tmp!=data.node.id){      
                        tmp=data.node.id;
                        treeobj.jstree("uncheck_all", null);
                        treeobj.jstree("check_node",data.node.id);
                    }
                })
0
Ali Esmaeili