子ツリーノードが選択されているときに、ルート以外のノードに動的に追加しようとしています。
これが私がそれを実装した方法です:
まず、ツリーにTreeStoreを設定し、次に子ツリーノードを動的に追加するために、ツリーコントローラーのitemexpandイベントで処理します。
//pThis is a NodeInterface obj of the selected node
itemexpand: function (pThis, pEOpts) {
//type is an attribute that I added so that I know what type of node that got selected
if (pThis.raw.type === 'Staff' && !pThis.hasChildNodes()) {
var staffNodeAry = [{text:"Teachers", type:"ChildStaff", leaf: false},
{text:"Principals", type:"ChildStaff", leaf: false}];
pThis.appendChild(staffNodeAry);
}
}
「Staff」タイプで「Teachers」ノードと「Principals」ノードの両方を表示できるため、これは非常にうまく機能しましたが、これまでに見つかった2つの問題があります。
1)コンソールに次のエラーがあります:
Uncaught TypeError:未定義のプロパティ'internalId'を読み取ることができません
理由はわかりませんが、誰かが啓蒙できればそれは素晴らしいことです。
2)「Teachers」と「Principals」のいずれかを展開すると、itemexpandによって返されるNodeInterfaceobjに未定義のrawオブジェクトが含まれます。
だから私はこれを行うことができませんでした:pThis.raw.type
私の理解では、新しい子ノードを追加するために新しいTreeStoreを作成する必要はありません。NodeInterfaceに準拠するオブジェクトの配列を作成することで十分だと思いましたが、間違っている可能性があります。誰かが私を正しい方向に向けることができれば、それは素晴らしいことです。
ハンディ
より詳しい情報:
私がやったことは実際にはExtJs4のドキュメントに従っているので、これはExtJs4フレームワークのバグだと思います。
これもExtjs-4.1.0-rc3でテストしましたが、同じエラーが発生しました。