Iron Routeのルートのdata
とparams
のコンポーネントを区別しようとしています。彼らの最高の使用。[データ]と[パラメータ]から変数をアクセスするMeteor Iron-Router
目的は単純な変数/パラメータをテンプレートに渡すことです。 params
またはdata
を使用すると、どちらが優れていますか?このような状況での主な相違点や利点は何ですか?
私にとって最大の違いは、params
にアクセスするには、関連付けられたヘルパーを介してその変数をテンプレートに渡す必要がある一方で、Blazeテンプレートのデータコンテキストとしてdata
が利用可能なようです。
私は個人的にはルータの設定で(DBクエリから)完全なデータコンテキストを設定するのが好きではなく、ヘルパーでそれを行うことを好みます。だから、テンプレートにこれらのパラメータを渡す最も簡単な方法は、実際にはdata
オブジェクトを使用しているため、余分なコードを保存する必要がありません。
しかし、これは一般的な行為に反しているようですので、私はこれがなぜこのようになるのか迷っています。使用
例
データ:Router.route('aRoute', {data: {var: "this var"}});
私はテンプレートにアクセスできる "aRoute":対
{{var}}
使用のparams:
Router.route('aRoute', {params: {var: "this var"}});
私が最初にヘルパーを作成する必要があります。
myVar : function() {return Router.current().params.var};
は、その後、私は「aRoute」テンプレート内のオブジェクトにアクセスすることができます。
{{myVar}}
私はこの権利を持っていますか?私は何か不足していますか?私が実際にルータのdata
を(一般的に使用されているように)データコンテキストに使用していないのであれば、このパターンは適切ですか?
ただ、文脈を明確にするために:私は、テンプレートにフラグを立てるパラメータを "編集可能"として渡しているだけなので、 'params {edit:TRUE}'か 'data {edit:TRUE}'が私が探しているオプションですで。また、私はこのパターンをアプリケーションの将来の開発を通じて継続しますので、私はこの時点で情報に基づいた選択をしたいと思います。 – robertdavid
私はこの2つの違いを理解していると思います。「データ」は主にテンプレートとレンダリング用ですが、paramsはDBクエリ用のパラメータをサーバに渡すのに最適です。 – robertdavid