流星のマニュアルによると、およそtemplate.data
:
このプロパティは、 テンプレートのトップレベルでデータコンテキストへのアクセスを提供します。 テンプレートが再レンダリングされるたびに更新されます。 アクセスは読み取り専用であり、ノンリアクティブです。
我々はthe current data context is reactiveは、それゆえ(反応性がすべての素敵を見て、ブレイズに滑らかにするものである)再レンダリングされているテンプレートなしに変更することができ、このif
文は「本当の」現在のかどうかをチェックするために書かれていることを知っているので、 Template.currentData()
に保存されている用語は、現在のテンプレートが最後にレンダリングされたときの「以前の」用語に比べて変更されています()。 、それを包むために
(非反応template.data
に格納されている)何この自動実行がないことである:現在のデータコンテキストが変更さ
- いつ...
- から用語を取得したデータそれらが異なる場合は、テンプレートを
- をレンダリングしたときのコンテキスト
- が
template.data
に保存されているものにこれらの用語の比較、それは(当たり前)の用語が変更されている意味:ポストの制限をリセットします。あなたが二回、そのテンプレートを渡すたび {{> Template.dynamic template=template data=data}} // see posts_list_controller.html
:この反応変数は、それは用語が通じ、値の取得
// initialize the reactive variables
instance.terms = new ReactiveVar(instance.data.terms);
:付きセクションがありonCreatedテンプレートでpost_list_controller.js以内
なぜ、newTermsの前の値ではなく、 'newTerms'と' instance.data.terms'を比較しますか?ポストリミットは、条件が変更されてもテンプレートが再レンダリングされないときにリセットされ、次回データコンテキストが変更されたときに、条件が今回変更されなくてもポストリミットが再度リセットされます。これは私たちが欲しいものですか?私には不思議そうだ。 –
また、テンプレート(UI)を再レンダリングせずに「更新」できることを意味しますか? (これまで、私はすべてのUIの変更が再レンダリングによって引き起こされたと考えていました。)これが当てはまる場合、再レンダリングは 'onCreated()'や 'onRendered()'のようなコールバックを引き起こすことはありませんか?ですから、ユーザーから見て、再レンダリングと「更新」の論理的な違いは何ですか?これは私の実装の詳細のように思えますし、最適化によって以前は再レンダリングが必要なものが "更新"だけ必要になることがあります。では、なぜ 'template.data'のようなAPIは実装の詳細に依存しますか? –
あなたの最初の質問として:私の意見では、これはあなたが指摘している非常に正当な懸念です。このコードはかなり最近のものです[7月28日に作成されました](https://github.com/TelescopeJS/Telescope/commit/346f50d52bdcf6ec8f5a2c86587dd46d9fb83f80)。私はいくつかのフィードバックを得るためのコミットについてコメントしました。 – SylvainB