【问题标题】:Render dictionary with foreach使用 foreach 渲染字典
【发布时间】:2014-08-09 04:45:54
【问题描述】:

我有一个字典,已经被 WebApi2 序列化,所以键是对象名,值是值。

如何使用 foreach 绑定进行淘汰赛渲染?

我尝试使用$data[0] 作为键,使用$data[1] 作为值,但这不起作用。

<table id="context-data" class="table-striped properties">
    <thead>
    </thead>
    <tbody data-bind="foreach: Properties">
        <tr>
            <th data-bind="text: $data[0]" style="text-align: right"></th>
            <td data-bind="text: $data[1]"></td>
        </tr>
    </tbody>
</table>

【问题讨论】:

    标签: c# knockout.js asp.net-web-api2


    【解决方案1】:

    foreach 绑定需要一个数组,您可以使用Object.keys method 获取给定对象自己的可枚举属性的数组。

    然后您可以使用$data 在您的Properties 对象上显示属性名称和数组索引器语法以获取其值(Properties[$data]):

    <tbody data-bind="foreach: Object.keys(Properties)">
        <tr>
            <th data-bind="text: $data" style="text-align: right"></th>
            <td data-bind="text: $parent.Properties[$data]"></td>
        </tr>
    </tbody>
    

    注意:您需要使用$parent 访问foreach 内的Properties

    演示JSFiddle.

    【讨论】:

    • 谢谢!您认为我应该更改为具有名称/值字段的对象还是当前的方式是一个好的 JSON 解决方案?
    • 视情况而定。如果您打算在应用程序的多个位置将属性用作数组,那么将其转换为真正的键/值对数组是有意义的。否则,如果您更多地使用 Properties 作为对象/字典,那么我不会更改它。
    猜你喜欢
    • 2014-08-25
    • 2015-05-05
    • 2021-08-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    相关资源
    最近更新 更多