17

私はしばらく検索していましたが、これは新しい質問であると確信しています。タイトルのように繰り返しはありません。 :)テンプレートレンダリング後のKnockoutJSバインドイベント

基本的には、KnockoutJSがjQueryテンプレートのようなものを使うときにテンプレートレンダリングの後に作成する購読可能なイベントがあるかどうかを調べようとしています。

私はビルトインの "afterRender"を使用したいと思いますが、観測可能な配列がクリアされても起動しないことがわかりました。私はこのデモを作成してその問題を説明しました:http://jsfiddle.net/farina/YWfV8/1/

また、私はカスタムハンドラを書くことができると知っています...しかし、それは本当に必要なもののためには不要です。

テンプレートがレンダリングを終了した後に発生するイベントが1つだけ必要です。

答えて

29

私の同僚は、実際に私が家に帰る前に遊んでいたものを使ってこの最後の夜を解決しました。

イベント "afterRender"、 "afterAdd"、 "beforeRemove"の "問題"全体は、 "foreach"バインディングとは異なる動作をするということです。 KnockoutJSはpageであなたにこれを伝えるのに十分なほどいいですが、何らかの理由で実際に私が見たときまでそれは実際に私のために沈んでいませんでした。実際にどのような作品

が結合全体の「foreachの」をスクラップし、ノックアウトのネイティブ「データ」を使用することで、次のようにバインドします

data-bind="template: { name: 'item-template', data: items, afterRender: caller }" 

はその後「afterRenderは」名前が示すとおりに動作します。

私はforeachなしでコレクションを繰り返したり新しいUIを表示できないという印象を受けましたが、これらの例は機能することを示しています。 (関数スタイルビューモデルを使用して)

私は時々どちらか一方を必要とするので、私は、両方のビューモデルのスタイルのための例を作っ。

助けてくれてありがとうDan !!

+0

残念ながら、ノックアウト参照が壊れて両方のペンが壊れています。テンプレートバインディングのための 'foreach'プロパティもあります。http://knockoutjs.com/documentation/template-binding.html#note-2-using-the-foreach-option-with-a-named-template。 – Olga

-1

beforeRemoveはお探しですか?あなたはどのような行動を達成したいのか分かりません。このサンプルをチェックアウトしてください:http://jsfiddle.net/romanych/YWfV8/8/ あなたはそれを望みますか?

+0

beforeRemoveは、テンプレートがレンダリングされる前に発生するため、実際にはそれをカバーしません。私は、テンプレートが完了した正確な瞬間を知る必要があります。 – farina

関連する問題