评论foreach绑定与foreach绑定在knockoutjs
在我的HTML中,我可以定义这些淘汰赛的foreach绑定:
<!-- ko foreach: customer --> <div data-bind="text: id" /> <!-- /ko -->
VS
<div data-bind="foreach: customer"> <div data-bind="text: id" /> </div>
这两种方法的区别在哪里?
当绑定部分中存在父子关系时使用本地绑定,如ul和li。
当绑定部分没有父子关系时,使用无容器绑定的注释语法。
在你的例子中,你使用第一个代码块,因为你没有试图绑定到父子结构。 所有你想要做的只是将你的客户数据绑定到一个div,你不应该创build一个父div和foreach
通过客户,并追加另一个div在父div。 这比你想做的还要多。
很好的使用无容器绑定
<!-- ko foreach: customer --> <section> <p data-bind="text: customer.name"></p> <p data-bind="text: customer.orderDate"></p> </section> <!-- /ko -->
但是,如果你有一个有序的列表,你应该使用本地绑定,因为它是有道理的。
本地人
<ol data-bind="foreach: customer"> <li data-bind="text: customer.name"></li> </ol>
无容器
<ol> <!-- ko foreach: customer --> <li data-bind="text: customer.name"></li> <!-- /ko --> </ol>
第二个例子看起来很愚蠢。 对于不应该复杂的事情,你会增加更多的复杂性。
在某些情况下,您可能需要复制一段标记,但是没有任何容器元素可以放置foreach
要处理这个问题,可以使用基于注释标记的无容器控制stream语法
关于“foreach”绑定的模式细节,注4:使用没有容器元素的foreach