ツリー構造のデータ、既知のノードの絶対パスを特定します(el-cascaderはデフォルト選択を提供します)
1947 ワード
ツリー構造のデータ、ノードのidが既知で、その絶対パスを見つけます(el-cascaderはデフォルト選択を提供します)需要 実装形態 で発生した問題 構想 を実現問題 これは私の个人的な考え方で、どこが间违いがあってどうぞよろしくお愿いします!
需要
製品にはパケットの機能があり、パケットのレベルは拡張を制限せず、各ユーザーにはパケットがあります(ユーザーは現在のパケットのidのみを保存します).
インプリメンテーションモード
element-uiのel-cascaderのコンポーネントを使用し、各ノードデータのidをキー値として使用します.
データ構造**(id不規則)**
問題
ユーザーパケットを編集する場合は、デフォルトで選択する前のパケット情報が必要です.el-cascaderでは、デフォルトでチェックするには、v-modelを絶対パスの配列に設定する必要がありますが、ユーザーの現在のパケットidしか入手できませんので、絶対パスの配列を構築する必要があります.
構想
第一に考えられるのは再帰的な方法を用いてchildrenを循環して対応するidを取得することである.
呼び出しメソッドは、まずターゲットのidを返し、親ノードのidも配列に配置します.これにより、逆のlistが得られます.最終配列を反転する必要があります.
インプリメンテーション
に質問
この方法は存在するノードに適用され、他の状況はまだテストされていません.
**
これは私の个人的な考え方で、どこが间违いがあってどうぞよろしくお愿いします!
**
需要
製品にはパケットの機能があり、パケットのレベルは拡張を制限せず、各ユーザーにはパケットがあります(ユーザーは現在のパケットのidのみを保存します).
インプリメンテーションモード
element-uiのel-cascaderのコンポーネントを使用し、各ノードデータのidをキー値として使用します.
データ構造**(id不規則)**
[{
id: 'eeeee1',
name: ' 1',
children: [{
id: 'eeeewe1',
name: ' 1-1',
children: [{
id: 'eeesdsde1',
name: ' 1-1-1',
children: ...
},
...
],
...
]},
...
]
問題
ユーザーパケットを編集する場合は、デフォルトで選択する前のパケット情報が必要です.el-cascaderでは、デフォルトでチェックするには、v-modelを絶対パスの配列に設定する必要がありますが、ユーザーの現在のパケットidしか入手できませんので、絶対パスの配列を構築する必要があります.
構想
第一に考えられるのは再帰的な方法を用いてchildrenを循環して対応するidを取得することである.
呼び出しメソッドは、まずターゲットのidを返し、親ノードのidも配列に配置します.これにより、逆のlistが得られます.最終配列を反転する必要があります.
インプリメンテーション
var tmpParentIdList = [];
function getTreeInitModel(key,list){
for (var i = 0; i < list.length; i++) {
if (list[i].id == key) {
tmpParentIdList.push(list[i].id);
return true;
}else{
if (list[i].children && list[i].children.length > 0) {
if (getTreeInitModel(key,list[i].children)) {
tmpParentIdList.push(list[i].id);
return true;
}
}
}
}
return false;
}
:
tmpParentIdList = [];
getTreeInitModel(selectId,treeList);
this.treeModel = tmpParentIdList.reverse();
に質問
この方法は存在するノードに適用され、他の状況はまだテストされていません.
**
これは私の个人的な考え方で、どこが间违いがあってどうぞよろしくお愿いします!
**