评论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

Interesting Posts