20

我遇到了这个敲除代码,我对以下代码的执行感到困惑:

   <!-- ko if: $parent.name == name -->
   <a data-bind='text: name'></a> 
   <!-- /ko -->

这段代码不应该被解释为注释吗?

阅读文档: http:
//knockoutjs.com/documentation/custom-bindings-for-virtual-elements.html
这看起来像自定义绑定?

4

2 回答 2

32

It's a knockout conditional comment. The HTML inside the comment block is only executed if the code validates to true. Knockout can read and process this comment for you. You don't have to do anything special. Simply supply the conditional and make sure the variables you reference do in fact exist. Then sit back and let knockout do the rest.

于 2013-01-29T20:05:58.770 回答
10

它不是自定义绑定。您遇到的是淘汰赛的文档所称的“虚拟元素”,它是应用于一段代码而不是元素的绑定。如果您想有条件地评估(即绑定到您的视图模型)DOM 的一部分,您可以将其放在带有if绑定的 div 中,也可以将其放在类似的注释中。

HTML 注释是 DOM 的一部分,因此没有什么可以阻止敲除检索和解释它们。

于 2013-01-30T05:03:30.140 回答