2016-04-04 4 views
1

Iron Routeのルートのdataparamsのコンポーネントを区別しようとしています。彼らの最高の使用。[データ]と[パラメータ]から変数をアクセスする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を(一般的に使用されているように)データコンテキストに使用していないのであれば、このパターンは適切ですか?

+0

ただ、文脈を明確にするために:私は、テンプレートにフラグを立てるパラメータを "編集可能"として渡しているだけなので、 'params {edit:TRUE}'か 'data {edit:TRUE}'が私が探しているオプションですで。また、私はこのパターンをアプリケーションの将来の開発を通じて継続しますので、私はこの時点で情報に基づいた選択をしたいと思います。 – robertdavid

+0

私はこの2つの違いを理解していると思います。「データ」は主にテンプレートとレンダリング用ですが、paramsはDBクエリ用のパラメータをサーバに渡すのに最適です。 – robertdavid

答えて

2

これは意見に接しています.i-rの好ましいパターンは、data:を使用してルートのデータコンテキストを設定することです。これにより、テンプレートは非常に標準的な方法でデータを消費することができ、潜在的にヘルパーを必要としないことも可能です。

i-rがデータコンテキストを提供するとき、テンプレートは別のテンプレートでネストされ、データコンテキストとともに提供されるように振舞うことができます。違いはありません。 paramsアプローチでは、ルートに一致するテンプレートでのみテンプレートを使用できます。

+0

ありがとう@ michel-floyd。ルートを使用していない場合とルートを使用していない場合のデータへのアクセスに関する最後の点はありませんでした。私は私の特定のアプリケーションのために、 'data'のフィールドを使って、今後メインテンプレートのルーティングや入れ子の使用を許可します。 – robertdavid

関連する問題