在 Knockout JS 中,是否可以执行一个以 2 为增量的 foreach
?类似于:
for (var i = 0; i < array.length; i += 2) {
// Do stuff
}
我想这样做的原因是因为我需要循环的数据是一个数组而不是一个对象。示例:
viewModel = function () {
this.facets = ["Sample", 100, "Sample 2", 200];
}
但是数据需要这样显示:
<ul data-bind="foreach: facets"> <!-- Can this foreach be incremented by 2? -->
<li>$data[$index]: $data[$index + 1]</li>
</ul>
如有任何帮助,我们将不胜感激。
最佳答案
您可以为此编写一个自定义绑定(bind)处理程序,但我宁愿让模板远离这些难看的细节。
我建议写一个 ko.computed
:
function Model() {
this.data = ko.observableArray(["Sample", 100, "Sample 2", 200])
this.items = ko.computed(function() {
var value = [];
var data = this.data();
for (var i=0; i<data.length; i+=2) {
value.push({ key: data[i], value: data[i+1]);
}
return value;
}, this);
}
var model = new Model();
现在您可以遍历模板中的 items
并访问 key
和 value
。更新原始 data
数组将自动重建 items
计算可观察值。
模板代码如下:
<ul data-bind="foreach: items">
<li><span data-bind="text: key"></span>: <span data-bind="text: value"></span></li>
</ul>
关于javascript - knockout JS : foreach that increments by 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14569174/