2014-10-06 76 views
0

具有以下模板,但它不按预期呈现。有些东西与淘汰赛的控制流。 名称属性应该在div之间,如果声明但是它没有声明到两个之间。我错过了什么?嵌套如果foreach中的块不按预期方式呈现

<!-- ko foreach: userAddresses --> 
    <div data-bind="text: name"></div> // this prints correctly 
    <!-- ko if: shouldStartNewRow($index) --> 
    <div class="row"> 
    <!-- /ko --> 
     <div class="col-xs-4 text-left"><div data-bind="text: name"></div></div> // nothing prints here 
    <!-- ko if: shouldStartNewRow($index) --> 
    </div> 
    <!-- /ko --> 
<!-- /ko --> 

这将产生:

<div>Joe blow</div> 
<div class="row"> 
    <div class="col-xs-4 text-left"><div> </div></div> // missing Joe blow here. it does produce a single space 
</div> 

更新:
创建一个fiddle显示的问题。看起来,如果不能在一个条件块中整齐关闭所有的HTML,这会导致淘汰赛失控。

+0

此之前已经回答了: http://stackoverflow.com/a/18157118/1287183 – 2014-10-06 23:40:34

+0

可能重复[创建每2记录使用敲除foreach新行记录](http://stackoverflow.com/questions/18156558/create-new-row-every-2 -记录-using-knockout-foreach) – 2014-10-06 23:41:00

回答

0

只是尝试

<div data-bind="text: $data.name"></div> 

此外我认为你不能有一个注释内未关闭的元素,如果块

所以应该比较像:

<!-- ko foreach: userAddresses --> 
    <div data-bind="text: name"></div> 
    <!-- ko if: shouldStartNewRow($index) --> 
    <div class="row"> 
     <div class="col-xs-4 text-left"><div data-bind="text: name"></div></div> 
    </div> 
    <!-- ko ifnot: shouldStartNewRow($index) --> 
     <div class="col-xs-4 text-left"><div data-bind="text: name"></div></div> 
    <!-- /ko --> 
<!-- /ko --> 
+0

试过了,但仍然没有打印。 – TugboatCaptain 2014-10-06 20:24:12

+0

做了一个更新,也许它有帮助 – 2014-10-06 20:27:32

+0

设置一个小提琴将是一个很大的帮助 – 2014-10-06 20:33:59