Javascript 击倒JS:foreach,增量为2
在Knockout JS中,是否可以执行增量为2的Javascript 击倒JS:foreach,增量为2,javascript,knockout.js,Javascript,Knockout.js,在Knockout JS中,是否可以执行增量为2的foreach?类似于: for (var i = 0; i < array.length; i += 2) { // Do stuff } 但数据需要如下显示: <ul data-bind="foreach: facets"> <!-- Can this foreach be incremented by 2? --> <li>$data[$index]: $data[$index +
foreach
?类似于:
for (var i = 0; i < array.length; i += 2) {
// Do stuff
}
但数据需要如下显示:
<ul data-bind="foreach: facets"> <!-- Can this foreach be incremented by 2? -->
<li>$data[$index]: $data[$index + 1]</li>
</ul>
- $data[$index]:$data[$index+1]
任何帮助都将不胜感激。这可能是您正在寻找的:
for (var i = 0; i < array.length; i += 2) {
var sample = array[i];
var number = array[i+1];
var display = "<li>" + sample + ": " + number + "</li>" // display this
}
for(变量i=0;i”+sample+:“+number+”“//显示此
}
看起来您已经有了它,所以我不确定问题出在哪里…您可以使用函数创建需要绑定到的结构:
self.arrayFunc = function() {
var result = [];
for (var i = 0, length = array.length; i += 2) {
result.push({first: array[i], second: [i + 1]};
}
};
您可以为此编写一个自定义绑定处理程序,但我更愿意让模板免于这些丑陋的细节 我建议写一篇: 我的重复绑定()允许您指定
步骤
选项
<ul>
<li data-bind="repeat: {foreach: facets, step: 2}"
data-repeat-bind="text: facets[$index] + ': ' + facets[$index+1]">
</li>
</ul>
-
淘汰赛在哪里?你在问什么?你的示例循环正好能做到这一点。问题出在哪里?保持模板逻辑自由总是一个好主意。您最好事先准备一个可导航的数据结构,并使模板不受此类实现细节的影响。这是一个简化的示例。这些数据实际上是从一个$.ajax
调用返回的,我无法控制数据的格式。
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();
<ul data-bind="foreach: items">
<li><span data-bind="text: key"></span>: <span data-bind="text: value"></span></li>
</ul>
<ul>
<li data-bind="repeat: {foreach: facets, step: 2}"
data-repeat-bind="text: facets[$index] + ': ' + facets[$index+1]">
</li>
</ul>