1

これは Mithril 固有の質問ではないかもしれませんが、一般的な VM DOM 差分です。ページを「再描画」しているときに、新しいイベント ハンドラーを追加したり、イベント ハンドラーを削除したり、「onclick」などのイベントに関連付けられたイベント ハンドラーを変更したりしているときに、VM DOM diffing が変更を検出しないようです。 「実際の」DOM の再レンダリングを明示的に強制します。

これらの状況を処理するための適切なパターンはありますか。

4

1 に答える 1

1

特に Mithril では、ハンドラー関数が完了した後、onclickすべてのonハンドラーが自動的に再描画をトリガーします。ただし、onclick ハンドラーが実際の DOM 操作 (jQuery やアニメーション スイートなどのサードパーティ ライブラリ) を行う場合は、config次の属性 を使用する必要があります ページがレンダリングされた後に呼び出されます。

イベント ハンドラーの変更に関しては、レンダリング サイクルのいつ変更を行うかによって異なります。私はいくつかのコードを見る必要があります。それほど不便でなければ、 redraw を手動で呼び出すことは悪いことではありません。再描画戦略が「diff」の場合、ペナルティはかかりません。

最後に、独自のイベントを導入する場合は、イベント ハンドラーで m.startComputation/m.endComputation を使用することを検討してください。これらはより細かい粒度制御を提供し、再描画が自動的に呼び出されます。 http://lhorie.github.io/mithril/mithril.computation.html

于 2015-08-26T17:25:44.657 に答える