【问题标题】:knockout "if binding" not working淘汰赛“如果绑定”不起作用
【发布时间】:2013-03-01 05:43:47
【问题描述】:

使用 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 -->

我的绑定有问题吗?

【问题讨论】:

  • 您能发布一下您的Item2 收藏集是什么样子的吗?

标签: knockout.js viewmodel


【解决方案1】:

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

【讨论】:

  • 还是改用可见绑定?
  • @PaulManzotti 有效点,在此代码中没有理由使用“if”,因为没有涉及其他绑定。
  • @fab 感谢您的解释,这是有道理的。我最终使用了可见绑定,因为在这种情况下确实更合适
  • 很好,这个让我挠了几分钟。
  • 不是元素,而是它的内容......我生命中的两个小时,我永远不会回来!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-26
    • 2014-01-10
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2013-12-27
    • 2012-11-08
    相关资源
    最近更新 更多