3

Web サイトに Gridster を使用したいのですが、「add_widget」コマンドで多数のウィジェットを追加する必要があります。テストを行ったところ、「add_widget」機能に問題があると思います。グリッドがますます遅くなり、メモリ リークが発生しています。

このビデオでそれを見ることができます:grister problem video

ただし、ビデオでわかるように、最初に(add_widget関数ではなく)ウィジェットを追加しても問題ありません。手伝って頂けますか ?私のコードに何か問題がありますか?

前もって感謝します !

4

3 に答える 3

8

私自身の経験では、主な原因はautogenerate_stylesheet設定の使用にありました。問題は、 を呼び出すたびに css を再生成することadd_widget()です。これにより、ブラウザが完全に停止します。さらに、gridster には、スタイルシートが複製され、多数<head>の重複したスタイル ルールが埋められ、ブラウザーが難しくなるというバグがありました (このバグは修正されたと思われますが、私の経験では、修正は特定のシナリオでのみ機能し、間違いなく機能しませんでした)私の中で)。

gridster を使用していたとき、ウィジェットは常に同じサイズでした。したがって、私の場合、スタイルシートを一度生成するだけで、再生成する必要はありませんでした。

パブリック API の一部ではないと思いますが、generate_stylesheet()手動でメソッドを 1 回だけ呼び出すことができます。

var gridster = $(".gridster ul").gridster({
    autogenerate_stylesheet: false,
    widget_base_dimensions: [140, 140],
    //other options...
}).data('gridster');

gridster.generate_stylesheet({rows: 30; cols: 8});

//freely call gridster.add_widget(...); as many times as you like

スタイルシートは 1 回しか生成しないため、gridster がすべてのウィジェットを収容するのに十分な行と列のスタイル ルールを生成することを確認する必要があります。そうしないと、範囲を超えるとレイアウトが壊れてしまいます。を呼び出すときに行と列の上限を指定するだけgenerate_stylesheet(opts)です。そうしないと、 gridster インスタンスがmax_rowsandに使用している値にデフォルト設定されているようmax_colsです。

良い点は、スタイルシートを手動で生成することで、スタイルの重複バグも完全に回避できることです。

指数関数的な減速はなくなります。ハッピーグリッドスタリング。

于 2013-11-08T05:05:17.320 に答える
5

私はこれに少し遅れていることを知っていますが、同じ問題があり、上記の解決策はどれも機能しませんでした。

しかし、バックエンドでウィジェットのサイズと座標を整数ではなく文字列として生成していることに気付きました。

それらが整数であることを確認することで、ロードを高速化することができました。

于 2014-08-07T14:54:06.980 に答える
1

これを修正する最善の方法は、自動生成されたスタイルシートを無効にするのではなく、jquery.gridster.js の fn.generate_stylesheet 関数を編集することです。

関数の最後で、次の行の直前に:

    return this.add_style_tag(styles);
};

次の行を追加します。

this.remove_style_tags();

最終結果は次のようになります。

    this.remove_style_tags();
    return this.add_style_tag(styles);
};

これにより、スタイルシートが生成されるたびに前のものは削除されるため、重複の問題はありません!

于 2014-05-22T09:15:42.077 に答える