1

map.fromjs を使用してこれらの項目を監視可能な配列にマッピングするノックアウト extension.im を使用して、データテーブルに 1000 行を超える行をロードすると、ページの初期ロードが本当に遅くなります。

この遅い初期ロードを回避するために、配列に含まれる1000以上のオブジェクトが観察できないことを意味するプレーンなjsonオブジェクトだけで埋められるように、観察可能な配列を設定しようとしました。

しかし、オブジェクトは観察可能ではないため、編集がプレーン オブジェクトで行われたとき、バインディングがないため、変更はデータテーブル グリッドに表示されませんでした。プレーン編集されたjsonオブジェクトの新しい値に対応するためにUIを変更する方法はありますか?

編集したオブジェクトを監視可能な配列から削除して、それを読み取ろうとしても成功しませんでした。

4

2 に答える 2

0

2500オブジェクトは多くありません... imo ...しかし、90,000行以上でこれを実行しようとするプロジェクトがあり、実際にクロムを殺しました...解決策はサーバーサイドページングでした...ノックアウトバウンドページングを作成しましたこれは、ページごとに少量の行を要求します。これらのパラメーターはストアド プロシージャで処理されました。サーバー側の言語でもページング パラメーターを処理することができます。これにはサーバーへのより多くの旅行が必要でしたが、トレードオフはそれだけの価値がありました..

ここにいくつかのSQLコード...

declare @rowCount int = 25;

Select MainSearchWithRowNumbers.*       
FROM
(SELECT
    ROW_NUMBER() OVER () As RowNumber
    ,Count(*) OVER () as TotalRows
    ,CEILING(CAST(Count(*) OVER () as FLOAT) / CAST(@rowCount as FLOAT)) AS TotalPages
    ,*
FROM
    (
     SELECT 
        -- ROW_NUMBER() OVER (ORDER BY CarcassRemovalId) AS AbsRowNumber
        Count(*) OVER () AS AbsTotalRows
        ,CEILING(CAST(Count(*) OVER () AS FLOAT) / CAST(@rowCount AS FLOAT)) AS AbsTotalPages
        ,*
     FROM YOURTABLE) 
    ) as MainSearch
) as MainSearchWithRowNumbers
WHERE
    (@page is null)
     or (
                (RowNumber <= @page * @rowCount)
            and (RowNumber > (@page - 1) * @rowCount)
    )
于 2015-09-22T18:32:20.713 に答える
0

すべてのアイテムのすべての編集可能なプロパティを監視可能として設定する必要があります。例えば:

self.items = ko.observableArray(ko.utils.arrayMap(
    datasource,
    function(row){
        return {
            id: row.id,
            title: ko.observable(row.title)
        };
    }
));

何千ものオブジェクトを気にする必要はありません。この量はそれほど大きくありません。

2,500 個のオブジェクトでどのように動作するかを見てみましょう: http://jsfiddle.net/HfzvG/

于 2013-04-20T18:44:20.743 に答える