knockout JS绑定到对象的属性

时间:2012-10-02 07:45:34

标签: javascript html mvvm knockout.js

我需要将一些HTML绑定到一个对象,但我的问题是我在开发时不知道该对象的属性。

我的主视图模型中有一个selectedItem属性,我已绑定到HTML中的一个部分:

<div data-bind="with: selectedItem">

</div>

现在我想根据属性名称和属性值生成一个表:

<div data-bind="foreach: [WHAT DO I PUT HERE?]">
    <label class="control-label"><span data-bind="text: [OR HERE?]" /></label>
</div>

我真的不知道该怎么做。非常感谢任何帮助。

另外,稍微扩展一下,我想以不同的方式处理绑定对象的属性,例如,如果属性只是一个基本类型,只输出它,但如果是另一个对象/数组,则处理它特别

可以这样做吗?

2 个答案:

答案 0 :(得分:13)

如果其他人想要绑定一个简单对象的属性。你可以这样做......

<table>
    <tbody data-bind="foreach: arrayOfObjects">
        <tr data-bind="foreach: Object.keys($data)">
            <td data-bind="text: $parent[$data]"></td>
        </tr>
    </tbody>
</table>

注意:旧版浏览器不支持object.keys,但您可以使用它来添加向后兼容性http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation

答案 1 :(得分:4)

Here是一个使用计算的observable 在运行时选择要显示的数据的工作示例。动态选择的templates也用于根据要渲染的数据类型(数组或标量)呈现数据。