Javascript RenderPartial忽略周围的淘汰foreach
我正在尝试使用ASP.net、knockout和javascript的组合呈现一个交互式树。树中的每个节点都有一个“项”列表和一个“组”列表,其中每个“组”是另一个节点。以下是每个节点最简单形式的HTML(这是_GroupView.cshtml,因此是递归的):Javascript RenderPartial忽略周围的淘汰foreach,javascript,asp.net,knockout.js,Javascript,Asp.net,Knockout.js,我正在尝试使用ASP.net、knockout和javascript的组合呈现一个交互式树。树中的每个节点都有一个“项”列表和一个“组”列表,其中每个“组”是另一个节点。以下是每个节点最简单形式的HTML(这是_GroupView.cshtml,因此是递归的): @{Html.RenderPartial(“_ItemView”);} @{Html.RenderPartial(“_GroupView”);} +项目 +团体 AddItem和addGroup将新的javascr
-
@{Html.RenderPartial(“_ItemView”);}
-
@{Html.RenderPartial(“_GroupView”);}
+项目
+团体
AddItem和addGroup将新的javascript视图模型添加到childItems和childGroups列表中,然后这些列表应通过foreach绑定绑定到RenderPartial创建的视图。这对项目非常有效,但组存在问题
我看到一个问题,在加载时,这个页面忽略了knockout foreach,并且始终调用renderparties,即使childItems和childGroups列表为空。这将导致_groupview的无限递归和StackOverflowException
为什么foreach被忽略了?RenderPartial是否总是被调用一次,即使它位于条件表达式中?是的,将始终调用
RenderPartial
语句,因为这些语句在服务器端展开。敲除foreach
在客户端处理
也许您可以在foreach
循环中使用模板:()
<div>
<ul id="siblingList" data-bind="foreach: childItems">
<li>
@{ Html.RenderPartial("_ItemView"); }
</li>
</ul>
<ul id="groupList" data-bind="foreach: childGroups">
<li>
@{ Html.RenderPartial("_GroupView"); }
</li>
</ul>
<br/>
<button data-bind="click: addItem">+ Item</button>
<button data-bind="click: addGroup">+ Group</button>
</div>