我有一個多維關聯數組。使用Knockout'foreach'循環多維數組
this.items = ko.observableArray([
{ name: "name1", viewable: true, children: [
{ name: "name1-1", viewable: true, children: []},
{ name: "name1-2", viewable: false, children: []}
] },
{ name: "name2", viewable: false, children: [] },
{ name: "name3", viewable: true, children: [
{ name: "name3-1", viewable: true, children: []},
] },
{ name: "name4", viewable: true, children: [] }
]);
目標是循環訪問該數組,並僅打印出'可查看'設置爲true的值。
我有這個工作使用一堆if和foreach語句,但代碼已經開始失控。這個例子只涵蓋了2級買我的陣列可以得到高達5級深,所以這段代碼將會倍增並變得很難看真的很快。
<ul data-bind="foreach: items">
<!-- ko if: viewable -->
<li data-bind="text: name"></li>
<!-- ko foreach: children -->
<!-- ko if: viewable -->
<li data-bind="text: name"></li>
<!-- /ko -->
<!-- /ko -->
<!-- /ko -->
</ul>
那麼是否有更簡單/更好的方式來遍歷整個數組?
你是否有適當的接受性研究?例如。這些項目在每個級別上看起來都一樣?在你的示例中,一些'children'缺少如下所示:'{name:「name1-1」,viewable:true},'這是一個需求嗎? – nemesv 2013-04-04 15:19:34
哦,這是一個錯字。我可以控制這一點,所以我認爲最好包括'孩子',即使它是空的。我編輯了我的代碼並將孩子添加到所有項目中。所以,是的,所有的項目在各個層面上看起來都是一樣的。 – dmathisen 2013-04-04 15:23:49