2

私は Knockout.js と 960.gs の初心者です。

次のような JSON データを取得しています。

[1, a1],[2,a2],...[12, a12] [13, b13],[14,b14]......[24,b24]

grid-12 構造の div を取得しました

そのグリッドを 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

次のような出力が必要です。最初の列には a 値が入力され、その直後に b 値が残りのグリッドに入力されます。

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

どのように行うことが可能ですか?よろしくお願いします。

4

1 に答える 1

1

非常に興味深い問題です。まず、ノックアウトには存在しないデータに関する一定レベルの知識が必要なため、ノックアウトはこれを直接サポートしていません。

何度か試行した結果、データ モデルを 1 次元配列から 2 次元配列に変換する中間ステップが必要であることがわかりました。これにより、 each の外側の foreach バインディングと、 each の内側の 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/に実用的なソリューションがあります

于 2012-11-10T19:01:41.097 に答える