knockout JS绑定到对象的属性

Mar*_*ark 9 html javascript mvvm knockout.js

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

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

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

</div>
Run Code Online (Sandbox Code Playgroud)

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

<div data-bind="foreach: [WHAT DO I PUT HERE?]">
    <label class="control-label"><span data-bind="text: [OR HERE?]" /></label>
</div>
Run Code Online (Sandbox Code Playgroud)

我真的不知道该怎么做.任何帮助是极大的赞赏.

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

可以这样做吗?

Dea*_*rth 13

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

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

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


gbs*_*gbs 4

这是一个使用计算可观察量在运行时选择要显示的数据的工作示例。动态选择的模板还用于根据要呈现的数据类型(数组或标量)来呈现数据。

  • 我想我现在理解你了。[此示例](http://jsfiddle.net/jQ2At/4/) 是您要找的吗? (2认同)