我循环遍历数组并通过合成
显示其内容<!-- ko foreach: { data: datas} -->
<div>
<!-- ko compose: {
model: 'show',
activationData: {
bundle:bundle
},
} -->
<!-- /ko -->
</div>
<!-- /ko -->
组合调用模型show.js,它将activationData包裹在一个observable中并将其显示在表格中
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>
一切正常,但是当我循环播放多个数据时,之前显示的所有合成都会显示最后一个元素的内容。我知道它与我使用bundle作为一个可观察的事实相关联,我怎么能将组合作为一个孤立的可观察对象发送到组合物?我错过了什么
答案 0 :(得分:2)
原因是您没有在视图模型中使用构造函数。你需要创建一个对象并将诸如activate之类的东西附加到它的原型而不是你正在做的方式。点击此处查看示例 - http://durandaljs.com/documentation/Using-Composition.html
以下是消息框docs中的另一个示例 -
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);
};