給定一個角指令具有以下DOM API:Angular.js如何從JSON數據創建嵌套樹指令
<my-tree>
<my-tree-item>First</my-tree-item>
<my-tree-item>Second</my-tree-item>
<my-tree-item>Third</my-tree-item>
<my-tree-group>
A group
<my-tree-item>Forth</my-tree-item>
<my-tree-item>Fifth</my-tree-item>
<my-tree-item>Sixth</my-tree-item>
</my-tree-group>
</my-tree>
我怎樣才能創造這樣的一個模板和數據結構如下:
[
{
name: 'First'
},
{
name: 'Second'
},
{
name: 'Third'
},
{
name: 'A group',
children: [
{
name: 'Forth'
},
{
name: 'Fifth'
},
{
name: 'Sixth'
}
]
}
]
真實的數據結構可能會繼續下降到任何深度。
ng-repeat和ng-switch似乎需要,但需要或留下額外的DOM節點。例如,應該重複ng-repeat,因爲該項目可以是兩種類型中的一種。當使用ng-switch時,它似乎有助於將它用作元素,但是在DOM中留下了一個ng開關。
我考慮合併my-tree-item和my-tree-group,但有單獨的指令似乎有意義,因爲my-tree-group會有不適用於常規項目的額外選項。
有沒有辦法使用Angular來創建這個沒有額外節點的精確結構?
有沒有更好的方法來處理這個問題?
做多餘的節點導致什麼問題? –
可以在指令中使用'replace:true',因此不存在額外的節點 – charlietfl
@MattWay這些指令指向一個現有的代碼庫。額外的節點破壞了代碼中關於DOM結構的某些假設,這會破壞功能和樣式。 – corsen