【问题标题】:knockoutjs data-bind dynamically img src based on index淘汰js数据-基于索引动态绑定img src
【发布时间】:2016-06-08 16:15:41
【问题描述】:

我有这个代码:

  <tbody>
                        <tr data-bind="foreach: EffectQuantityTotal">
                            <td>
                                <span>
                                    <img data-bind="attr: { src: $root.ProductEffectImages() ? $root.ProductEffectImages()[0].ImageSrc : '../images/style2/pose-select-placeholder.png' }, click: $root.Paste"
                                        width="120" />
                                </span>
                            </td>
                        </tr>
                    </tbody>

$root.ProductEffectImages() 将为空,直到实际的点击事件“粘贴”不会完成。占位符图像显示正常,但我想在单击功能完成后更新图像。对象被正确创建,但我想为每个 effectquantitytotal 获取第 n 个 imageurl,例如,如果我的 EffectQuantityTotal 为 3,我将为每个值创建图像占位符,在选择 ImageUrl 之前,将显示占位符,但是一旦选择图像需要设置正确的图像 url。

因此,与我现在测试硬编码 $root.ProductEffectImages()[0].ImageSrc 不同,0 将被替换为第 n 个值,可能是使用 $index 而不是 0。

【问题讨论】:

  • 代替[0],试试[$index() - 1] ?
  • @RoyJ 目前该数组 (ProductEffectImages) 为空,直到注入第一个对象。如何避免异常?
  • 我认为条件可以避免异常。

标签: javascript knockout.js knockout-2.0 knockout-3.0


【解决方案1】:

observableArray 使用空数组进行初始化,而不是 null,即使您将其传递给 null。创建它后,您可以分配它null,然后它就会真正具有该值,并且您的条件将允许您使用

src: $root.ProductEffectImages() ? $root.ProductEffectImages()[$index() - 1].ImageSrc : ...

【讨论】:

    猜你喜欢
    • 2017-12-12
    • 2016-10-21
    • 2019-08-04
    • 2013-08-14
    • 2013-01-09
    • 1970-01-01
    • 2016-08-05
    • 2020-04-13
    • 2015-09-26
    相关资源
    最近更新 更多