我最近一直在玩knockoutjs,看看它对我所做的事情是否有任何帮助。我虽然有点陷入困境。
假设我有一个observableArray并且我想使用模板但没有容器来绑定项目,或者渲染自己。有可能吗?
示例标记为:
<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>
这是可能的吗?或者我是以错误的方式思考它?
感谢。
答案 0 :(得分:2)
版本1.3是“稳定的beta”,允许您声明所谓的无容器控制流程。这是一种说法,你可以在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>
有关详情,请参阅Steve Sanderson博客上的this article。
我最近在一个相对较大的应用程序上使用了1.3.0,发现它非常稳定。
另外,在1.3.0中访问foreach模板中的父视图和根视图模型的能力非常有用,并且有助于使viewModel设计更加清晰。