6

本当にKnockoutJs(http://knockoutjs.com)を楽しみ始めています。私のWebアプリのほとんどはajax駆動です。サイト全体が読み込まれ、リンクからリンクへと、ajax呼び出しを介して本文のコンテンツを変更するだけです。

ajaxが新しいボディコンテンツで戻ってきたら、ノックアウトバインディングを実行できます。問題ない。次のページにリンクするとき(本文を置き換えるだけのajax呼び出し)。ノックアウトの建物はまだ記憶に残っていると思いますが、ドームが変わったため、実際には制限されていません。このトピックに関するいくつかの質問。

  1. 次のページにノックアウトがない場合、ノックアウトオブジェクトをメモリに残しておくのは本当に悪いことですか?さらに良いことに、ノックアウトオブジェクトをリセット(クリア)する方法はありますか?

  2. ノックアウトバインディングがあるページからノックアウトバインディングがある別のページに移動するとき、ko.applyBindings()を呼び出すだけで、古いものがクリアされ、新しいものが再バインドされますか?(もう一度、あるページから別のページに移動すると言うとき、私はajax呼び出しで本文をリロードしているだけです)。

  3. ノックアウトには「ライブ」バインディングがありますか。jQueryのライブバインディングのようなものですか?このようにして、ノックアウトを事前にロードして、コンテンツの変更からコンテンツの変更に再適用する必要がなくなります。

一般的に、ブラウザがページからページへと更新されないアプリで、ページからページへのノックアウトを最適に使用する方法についてのアドバイスを探しています。

助けてくれてありがとう。

4

1 に答える 1

1

1)次のページにノックアウトがない場合、ノックアウトオブジェクトをメモリに残しておくのは本当に悪いことですか?さらに良いことに、ノックアウトオブジェクトをリセット(クリア)する方法はありますか?

いいえ、それほど悪くはありません。ただし、本当にクリーンアップしたい場合は、に電話してくださいko.removeNode


2)ノックアウトバインディングがあるページからノックアウトバインディングがある別のページに移動するとき、ko.applyBindings()を呼び出すだけで、古いものがクリアされ、新しいものが再バインドされますか?(もう一度、あるページから別のページに移動すると言うとき、私はajax呼び出しで本文をリロードしているだけです)。

場合によります。

まず第一に、GregTが述べたように:

applyBindings()同じDOMノードで複数回呼び出すことはできません。

私は経験から知っています-ko.applyBindings()同じDOMノードで複数回呼び出すとメモリリークが発生します。[これを行う必要がある場合は、電話してくださいko.cleanNode()。]

ko.applyBindings()OTOH、同じDOMノードで複数回呼び出していない場合は、次の理由で問題ありません。

KOは、ノードを追加/削除するときにクリーンアップを実行します。これが発生する一般的な時間は、テンプレートを再レンダリングするときです。


3)ノックアウトには「ライブ」バインディングがありますか。jQueryのライブバインディングのようなものですか?このようにして、ノックアウトを事前にロードして、コンテンツの変更からコンテンツの変更に再適用する必要がなくなります。

私が知っていることではありませんが、あなたの質問を正しく理解していれば、必要なものを実装するためにネイティブのノックアウト機能は必要ありません。on()jQueryのメソッドを使用して自分で接続できるはずです(live()非推奨になっているため)。

于 2012-09-04T20:07:33.990 に答える