2013-03-13 43 views
7

使用Chrome进行调试时,我可以看到CoverPrices有9个元素。 foreach循环实际上运行良好,并且表格看起来正确,第一个跨度正确绑定到Item1。淘汰赛“如果绑定”不起作用

但是,if绑定不起作用并显示两个图像。然而,Item2中的所有元素都具有真正的价值,所以只有第一个图像应该显示出来。

<!-- ko foreach: CoverPrices --> 
    <tr> 
     <td> 
      <span data-bind="text: Item1"></span> 
     </td> 
     <!-- ko foreach: Item2 --> 
     <td> 
      <img src="~/Images/yes.png" alt="oui" data-bind="if: $data" /> 
      <img src="~/Images/no.png" alt="non" data-bind="ifnot: $data" /> 
     </td> 
     <!-- /ko --> 
    </tr> 
    <!-- /ko --> 

我的绑定有什么问题吗?

+0

你可以发布你的'Item2'集合是怎么样的? – nemesv 2013-03-13 10:35:09

回答

24

if-binding不影响整个元素,但它的内容。并且因为img元素没有内容,所以绑定无关紧要。

这将工作,以span作为容器元素:

<span data-bind="if: $data"><img src="~/Images/yes.png" alt="oui" /></span> 
<span data-bind="ifnot: $data"><img src="~/Images/no.png" alt="non" /></span> 

还有一个container-less syntax,如果你不希望其他元素:

<!-- ko if: $data --> 
    <img src="~/Images/yes.png" alt="oui" /> 
<!-- /ko --> 
<!-- ko ifnot: $data --> 
    <img src="~/Images/no.png" alt="non" /> 
<!-- /ko --> 
+2

或者使用可见的绑定呢? – 2013-03-13 10:42:32

+0

@PaulManzotti有效的点,在这段代码中没有理由使用“if”,因为没有其他绑定涉及。 – 2013-03-13 10:44:38

+0

@fab感谢您的解释,这是有道理的。我结束了使用可见的绑定,因为它在这种情况下似乎更合适 – Sam 2013-03-13 12:02:10

0

图像不绑定到DOM ,但图像正在加载。您可以检查网络流量。它不应该加载时,如果使用绑定