Durandal 作文 foreach
Posted
技术标签:
【中文标题】Durandal 作文 foreach【英文标题】:Durandal composition foreach 【发布时间】:2014-02-28 19:02:05 【问题描述】:我正在遍历一个数组并通过组合显示其内容
<!-- ko foreach: data: datas -->
<div>
<!-- ko compose:
model: 'show',
activationData:
bundle:bundle
,
-->
<!-- /ko -->
</div>
<!-- /ko -->
该组合调用了一个模型 show.js,该模型将 activationData 包包装在一个可观察对象中并将其显示在一个表格中
function (logger, utils)
var bundle = ko.observable();
var activate = function (data)
// process data.bundle further
bundle(populateBundle(data.bundle));
;
show.html
<table class="table table-bordered">
<tbody>
<!-- ko foreach: data:bundle().groups, as:'group' -->
<tr>
<td class="tolerances-values" align="center"><span data-bind="text: group.name"></span></td>
<td class="tolerances-values" align="center"><span data-bind="text: group.code"></span></td>
</tr>
<!-- /ko -->
</tbody>
</table>
一切正常,但是当我循环多个数据时,之前显示的所有组合都会显示最后一个元素的内容。我知道这与我将捆绑包用作可观察对象这一事实有关,但我如何才能让组合将发送到组合的每个捆绑包都视为孤立的可观察对象?我有什么遗漏吗
【问题讨论】:
【参考方案1】:原因是您没有在视图模型中使用构造函数。您需要创建一个对象并将诸如激活之类的东西附加到它的原型上,而不是您正在执行的方式。在这里查看示例 - http://durandaljs.com/documentation/Using-Composition.html
这是消息框文档中的另一个示例 -
var MessageBox = function(message, title, options)
this.message = message;
this.title = title || MessageBox.defaultTitle;
this.options = options || MessageBox.defaultOptions;
;
MessageBox.prototype.selectOption = function (dialogResult)
dialog.close(this, dialogResult);
;
【讨论】:
以上是关于Durandal 作文 foreach的主要内容,如果未能解决你的问题,请参考以下文章
如何使 jQuery AutoComplete 功能在 Durandal 中工作?
Karma + Jasmine + Durandal + KnockoutJS + RequireJS 单元测试中不匹配的匿名 define() 模块