【问题标题】:knockout js foreach binding displays [object object]淘汰js foreach绑定显示[object object]
【发布时间】:2016-03-08 05:07:28
【问题描述】:

我想为KnockoutObservableArray<string> 类型的_areas 数组中的每个项目添加一个<option>。但是,当我这样做时:

<select 
            multiple="multiple"
            class="select-multiple"
            data-bind="foreach: _regionGetter._areas">
            <option data-bind="text: $data"></option>
        </select>

它在每个&lt;option&gt; 中打印出一个[object object]。如何让它打印数组中的字符串而不是 [object object]?

【问题讨论】:

    标签: javascript knockout.js data-binding


    【解决方案1】:

    这是因为您的可观察数组中的项目是对象,然后您正在使用$data,因此将显示[object object]。如果项目是字符串,则 $data 只能在这种情况下使用。

    改为更改&lt;option data-bind="text: $data"&gt;&lt;/option&gt; 以使用包含您要显示的文本的对象属性。

    例如,如果对象有一个名为name 的属性,那么您可以使用&lt;option data-bind="text: name"&gt;&lt;/option&gt; 将选项文本绑定到此

    JsFiddle

    【讨论】:

    • 干杯。可观察数组是字符串类型。我无需将其更改为对象类型,只需为其指定命名属性,以便我可以在 forearch 数据绑定中访问它们。不过,这似乎需要发生,foreach 绑定不能用于可观察的字符串数组。
    • 能否请您使用浏览器调试工具验证它确实是一个字符串?当我将其更改为字符串时,您的代码可以工作:jsfiddle
    • 我不确定如何在 html 代码上使用调试器。我只知道如何在我的 javascript 文件上使用它。这是成功的一半,无法调试。
    • 您可以使用 chrome 并在设置区域的位置添加断点,然后验证设置的内容。以下是有关如何设置断点的一些信息:developers.google.com/web/tools/chrome-devtools/debug/…
    • 我的错,不是字符串。谢谢!
    猜你喜欢
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2014-08-20
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多