ComboBox 值(字串)需映射到 Tree 樹形結構中的唯一路徑 ['world','AF','KE'],以呼叫 tree.set('path', pathArray)。
// 1. ComboBox onChange 事件
var comboBox = new ComboBox({
store: myStore, // 共用資料源
searchAttr: "name", // 顯示屬性
onChange: function(selectedName) {
// 2. 在資料源中查找對應物件
var results = myStore.query({name: selectedName});
if (!results.length) return;
var item = results[0];
// 3. 向上遞迴收集父節點 ID,構建路徑陣列(父在前)
var path = [];
var current = item;
while (current) {
path.unshift(current.id); // 或 current.name,依 Tree path 設定
current = myStore.getParent(current); // 假設 store 支援 getParent
}
// 4. 應用至 Tree
tree.collapseAll(); // 先收合
tree.set('path', path).then(function() {
// 路徑展開完成
});
}
});
store.query({name: value}):依屬性查找項目。store.getParent(item) / store.getChildren(parent):樹形導航(需 store 實作 dojo/store/Observable + dijit/tree/ObjectStoreModel)。tree.set('path', idArray):展開至指定路徑(單一路徑用 path,多路徑用 paths)。tree.collapseAll():重置視圖。JSON 必須包含 id、name、parent(或 children)欄位,符合 dijit/tree/ObjectStoreModel 期望結構。參考官網範例:Dojo Tree Examples。
「使用 ComboBox onChange → myStore.query → 迭代父級構建陣列 → tree.set('path', array)」