knockout.js 和分块实用程序
knockout.js and chunking utility
我想创建某种函数,将数组分块成一定数量并显示在一行中。下面我有一个名为 pools 的数组,它会显示所有池。不过,我想每行显示三个。下面的 javascript 函数在代码中有效,但是如何使用 knockout.js?
HTML
<!-- ko foreach: pools -->
Javascript
var i,j,temparray,chunk = 10;
for (i=0,j=array.length; i<j; i+=chunk) {
temparray = array.slice(i,i+chunk);
}
您可以创建一个对象数组,其中每个对象包含您 "array" 中实际项目的数组,然后是 ko 中的嵌套循环。
var i, j, tempArray = [], chunk = 10;
for (i=0,j=array.length, k=0; i<j; i+=chunk, k++) {
temparray[k] = { items: array.slice(i,i+chunk); }
}
HTML
`<!-- ko foreach: pools -->
<div class="row">
<!-- ko foreach: items -->
<div class="col">`
假设 pools
是一个包含您的数据的可观察对象,您可以根据 pools
:
进行 poolRows
计算
var pools = ko.observableArray([]);
var poolRows = ko.computed(function () {
var poolRows = [];
for(var i=0;i<pools().length;i++) {
var pool = pools()[i];
if(i % 3 === 0) {
poolRows.push([]);
}
poolRows[Math.floor(i/3)].push(pool);
}
return poolRows
});
然后:
<!-- ko foreach: {data: poolRows, as: 'poolRow'} -->
<!-- ko foreach: {data: poolRow, as: 'pool'} -->
<!-- pool html here -->
<!-- /ko -->
<!-- /ko -->
我想创建某种函数,将数组分块成一定数量并显示在一行中。下面我有一个名为 pools 的数组,它会显示所有池。不过,我想每行显示三个。下面的 javascript 函数在代码中有效,但是如何使用 knockout.js?
HTML
<!-- ko foreach: pools -->
Javascript
var i,j,temparray,chunk = 10;
for (i=0,j=array.length; i<j; i+=chunk) {
temparray = array.slice(i,i+chunk);
}
您可以创建一个对象数组,其中每个对象包含您 "array" 中实际项目的数组,然后是 ko 中的嵌套循环。
var i, j, tempArray = [], chunk = 10;
for (i=0,j=array.length, k=0; i<j; i+=chunk, k++) {
temparray[k] = { items: array.slice(i,i+chunk); }
}
HTML
`<!-- ko foreach: pools -->
<div class="row">
<!-- ko foreach: items -->
<div class="col">`
假设 pools
是一个包含您的数据的可观察对象,您可以根据 pools
:
poolRows
计算
var pools = ko.observableArray([]);
var poolRows = ko.computed(function () {
var poolRows = [];
for(var i=0;i<pools().length;i++) {
var pool = pools()[i];
if(i % 3 === 0) {
poolRows.push([]);
}
poolRows[Math.floor(i/3)].push(pool);
}
return poolRows
});
然后:
<!-- ko foreach: {data: poolRows, as: 'poolRow'} -->
<!-- ko foreach: {data: poolRow, as: 'pool'} -->
<!-- pool html here -->
<!-- /ko -->
<!-- /ko -->