2017-11-08 4 views
0

ユーザーがテンプレート(たとえばI)にリダイレクトされる状況があります。 テンプレートIには、テンプレートをレンダリングするか、別の場所にリダイレクトするかを決定する条件があります。Meteorは、条件によってテンプレートが表示されないようにします。

私が今やっていることは、Template.I.onCreated()でその状態をチェックし、その条件が真であれば、新しいURLにwindow.location.hrefを入れることです。

しかし、これはリダイレクトする前にテンプレートIが画面に短時間表示されることがあります。

私は、このことが起こらないようにする方法が必要です。私はonRendered()の前にonCreated()が発生したと思って、それを防ぐ必要がありました。しかし、これはまだ動作していないようです。

+1

ルータでこれを行う方がよいでしょう。 –

+0

@MichelFloydは正しいです。ルータが手動でウィンドウの場所を変更する代わりに、これを制御できるようにすることが望ましいでしょう。あなたがチェックしているあなたの状態を説明できますか? – chazsolo

+0

@MichelFloydリダイレクトされているページが、ページを完全にリロードするまでロードされないスクリプトを含む新しいテンプレートにあるため、ルータを使用したくないです。それは鉄のルータは、テンプレートの断片に埋め込まれたスクリプトを実行させてくれないようです(それは?) – rahulserver

答えて

3

条件付きで炎にテンプレートをレンダリングする最も簡単な方法は、{{# if}}でそれをラップすることです:

<template name="parentTemplate"> 
{{#if someCondition}} 
    {{> childTemplate }} 
{{/if}} 
</template> 

あなたはsomeConditionためtruthyまたはfalsy値を返しますJSでヘルパーを定義することができます。 onCreatedで何もする必要はありません。

window.location.hrefでURLを変更することはお勧めできません。これにより、すべてのサブスクリプションを含め、アプリ全体が再読み込みされます。

+0

Iron routerのonBeforeActionのコメントにあなたの提案を使って修正しました。 それに応じてあなたの答えを更新することができますし、私はupvoteで受け入れるつもりです:) – rahulserver

+0

それは@chazsoloに属している! –

関連する問題