在敲门js中对<! - ko if:$ parent.name == name - >感到困惑

时间:2013-01-29 18:14:58

标签: javascript knockout.js

我遇到过这个Knockout代码,我对以下代码的执行情况感到困惑:

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

此代码不应被解释为评论吗?

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

2 个答案:

答案 0 :(得分:28)

这是一个淘汰条件评论。仅当代码验证为true时,才会执行注释块内的HTML。 Knockout可以为您阅读和处理此评论。你不需要做任何特别的事情。只需提供条件并确保您引用的变量确实存在。然后坐下来让淘汰赛做其余的事。

答案 1 :(得分:8)

这不是自定义绑定。你遇到的是knockout's documentation所谓的“虚拟元素”,它是一个应用于一段代码而不是一个元素的绑定。如果你想有条件地评估(即绑定到你的viewmodel)DOM的一部分你可以把它放在一个带有if绑定的div中,或者把它放在像这样的注释中。

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