jstreeチェックボックスは半分選択されたノードを取得できません



Jstree Checkbox Cannot Get Half Selected Nodes



今日の長沙はまた雨が降っています。

状況について話しましょう。プロジェクトでユーザー権限を取得したとき、jstreeを使用しました。これは、jstreeのチェックボックスを使用して、現在のユーザーの権限を確認することです。この権限はメニューに対応しています。異なるユーザーが異なるメニューを表示する必要があるためです。しかし、問題があります。つまり、1つのメニューの下に複数の子ノードがあり、子ノードの1つを選択解除すると、その親ノードは「半分選択」になります。半分選択されたノードになります、私は使用します



var ref = $( '#menuTree')。jstree(true)

var ids = ref.get_selected()//半分選択されたノードも取得すると思いました



これらの2行のコードでは、選択されたすべてのノード(選択されたノードと半分選択されたノード)を取得できないため、ページの表示に問題が生じます。メニューの下には、特定のノードが選択されていないという理由だけで、明らかに他のノードがあり、その結果、メニューをロードできません。実際、これは、半分選択されたノードを取得できないことが原因で発生する問題です。最初はバックエンドロジックに問題があると思っていたので、これは私の時間のほぼ1日を無駄にしました。

私が話していることをあなたが理解していないことを知っています。下の写真を見てください。

まず、以下の「品質管理管理」は、選択されたノード「品質管理計画」と選択されていないノード「データ修正」があるため、半分選択されたノードです。



メニューの権限を保存すると、「品質管理管理」メニューがなくなっていることがわかりました

それから私はこれを使ってこの問題を解決するのを手伝ったグループで大きな牛を見つけました

var ids = [] $.each($('#menuTree').jstree('get_checked'), function (index, item) { ids.push(item) }) $.each($('#menuTree').jstree('get_undetermined').find('.jstree-undetermined'), function (index, item) { ids.push(item.closest('.jstree-node').id) }) //Due to the problem of jstree's own method, it can't get the checked state of the gray box check box when getting all the selected nodes, so get the corresponding node id through the class attribute jstree-undetermined of the gray box ----- This is the half-selected node

ソースコード:

ユーザーの権限をリセットすると、完全に表示されます

結びの言葉、もっと質問し、もっと要約する