2012-11-01 58 views
2

我很newbee在Knockout.js和960.gs.通過Knockout.js Columner方式顯示數據,960.gs

我getiing一個JSON數據像以下:

[1,A1],[2,A2],...... [12,A12] [13,B13],[14,B14]。 ..... [24,B24]

我已採取一個div網格12結構

當我結合具有knockout.js該網格中,顯示如下:

a1  a2  a3 a4  a5 a6 
a7  a8  a9 a10 a11 a12 
b13 b14 b15 b16 b17 b18 
b19 b20 b21 b22 b23 b24 

我想要一個輸出如下,其中第一列將b Ë充滿了一個值,只是aftyer是b的值將開始填補剩下的網格:

a1 a5 a9 b13 
a2 a6 a10 b14 
a3 a7 a11 ... 
a4 a8 a12 ... 

這怎麼可能呢? 請幫助,提前致謝。

+0

工作解決方案您可以發佈您的HTML,也是你的KO代碼? – nemesv

+0

960.gs是否支持? – Tyrsius

回答

1

一個非常有趣的問題。首先,淘汰賽並不直接支持這一點,因爲這需要對淘汰賽中不存在的數據有足夠的瞭解。

在幾次嘗試後,我發現需要轉換你的數據模型從一個1個維陣列,在2維陣列的中間步驟。這允許每個外部的foreach綁定和每個內部的foreach綁定。對於最後一行,您必須確保填寫整行,否則表格將無法正確顯示。

,做這樣的代碼 -

var rowIndex = 0; 
var displayStructure = []; 
var maxNumberCells = data.length; 
var rowBreakCount = 24/numberColumns; 
while (rowIndex < (maxNumberCells + 1)/numberColumns) { 
    var row = []; 
    for (var column = 0; column < numberColumns; column++) { 
     var i = rowIndex + rowBreakCount * column; 
     var pushValue = (i < maxNumberCells) ? data[i] : '&nbsp;'; 
     row.push(pushValue); 
    } 

    displayStructure.push(row); 
    rowIndex++; 
} 

我在http://jsfiddle.net/photo_tom/cGMa2/20/