javascript - knockoutjs - 渲染模板或 foreach 到自身

标签 javascript knockout.js

我最近一直在玩knockoutjs,看看它是否会对我所做的事情有任何帮助。不过我有点卡住了。

假设我有一个 observableArray,并且我想使用模板绑定(bind)项目但没有容器,或者渲染自身。可能吗?

示例标记为:

<div class="header row">
    <div class="cell">Product Name</div>
    <div class="cell" data-bind="foreach: option_types">
        <div class="cell" data-bind="html: Name"></div>
    </div>
    <div class="cell">Level</div>
    <div class="cell">Infinite</div>
</div>

但是我真正想要的是这样的(注意没有子 .cell 元素,以及“renderSelf” - 组成的参数)

<div class="header row">
    <div class="cell">Product Name</div>
    <div class="cell" data-bind="foreach: option_types, renderSelf: true">
        ${Name}
    </div>
    <div class="cell">Level</div>
    <div class="cell">Infinite</div>
</div>

这会导致类似的结果

<div class="header row">
    <div class="cell">Product Name</div>
    <div class="cell">Name 1</div>
    <div class="cell">Name 2</div>
    <div class="cell">Name 3</div>
    <div class="cell">Name 4</div>
    <div class="cell">Level</div>
    <div class="cell">Infinite</div>
</div>

这可能吗?还是我的想法不对?

谢谢。

最佳答案

版本 1.3 是“稳定测试版”,允许您声明所谓的无容器控制流。这是一种奇特的说法,您可以在 HMTL 注释中声明 foreach,这将允许您实现所需的输出。对于您的示例,它看起来像这样:

<div class="header row">
    <div class="cell">Product Name</div>
    <!-- ko foreach: option-types -->
    <div class="cell" data-bind="html: Name"></div>
    <!-- /ko -->
    <div class="cell">Level</div>
    <div class="cell">Infinite</div>
</div>

参见this article请访问 Steve Sanderson 的博客了解更多信息。

最近在一个比较大的应用上使用了1.3.0,发现它非常稳定。

顺便说一句,1.3.0 中还可以在 foreach 模板中访问父 View 模型和 Root View 模型,这一功能非常有用,有助于保持 View 模型设计更加简洁。

关于javascript - knockoutjs - 渲染模板或 foreach 到自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8063463/

相关文章:

firefox - Knockout.js 和 Firefox 在登录表单上保存密码

javascript - 如何延迟 KO 结合直到加载外部模板?

javascript - 如何将关联数组键作为字符串返回?

javascript - 在固定宽度和 overflow hidden 的元素中向右滚动

javascript - 使用 javascript 和 ajax 将多个对象发送到 php

javascript - knockout if 语句检查函数的值

javascript - Knockout.js 将变量添加到代码中

javascript - 检测用户是否从 Chrome 扩展程序登录

javascript - Bootstrap子菜单点击后隐藏

list - 如何在knockout.js中制作按钮而不是项目