2016-05-30 4 views
0

他のhtmlテンプレート内での呼び出しによってテンプレートにリダイレクトする方法があるかどうか疑問です。実際に私は{{> myTemplate}}をホームテンプレート内に使用していますが、これは同じホームルート( '/')で "myTemplate"をレンダリングします。現在のテンプレート内でのレンダリングではなく、テンプレートへのリダイレクト

私がいることを必要とする理由:「MyTemplateには」そのすべての機能を実行するために、ルータのparamを必要とするので、私はそのような何かでそれを呼び出すようにしたい:

<template name="home"> 
    {{#if Template.subscriptionsReady}} 
     {{#if notEventJoined}} 
      {{> findEvent}} 
     {{else}} 
//*** BELOW HERE: I want to redirect (not just load) to eventContainer template 
// *** and set the getLastEvent param in route. 
      {{REDIRECT eventContainer getLastEventWatched}} 
     {{/if}} 
    {{else}} 
     Loading... 
    {{/if}} 
</template> 

その他の方法は、「一時的なテンプレート」を行うことですこれののonCreated関数を呼び出してくださいが、それは私には回避策のようです。

+1

あなたがハンドルを使用して炎のテンプレート内でリダイレクトすることはできません、あなたはJSでそれを行う必要があります。 f-rを使用している場合は、 'redirect( 'path')' –

+1

です。あなたはREDIRECTを置いた空のテンプレート(リダイレクタと呼ぶことができます)を呼び出すことができます。そのテンプレートのonrendered関数では、@MichelFloydが言ったように実際のリダイレクトを呼び出すことができます。こうすることで、ブレーズのテンプレートロジックに基づいてリダイレクトすることができます。 –

+0

@Michelと@Janありがとうございます。実際には、リダイレクションを同じテンプレートonCreated関数に追加しました。 – Ruben

答えて

1

私はこれが仕事だと思う:

ヘルパー

Template.home.helpers({ 
    notEventJoined: function(){ 
     //your conditionnal stuff 
     if(stuff) 
      return true; 
     Router.go('eventContainer/'+ getLastEventWatched) 
    } 
}); 

テンプレート

<template name="home"> 
    {{#if Template.subscriptionsReady}} 
     {{#if notEventJoined}} 
      {{> findEvent}} 
     {{/if}} 
    {{else}} 
     Loading... 
    {{/if}} 
</template> 
0

私は最終的には同じeventContainerテンプレートにリダイレクトを追加することでした何をしましたかonCreated関数です。

Template.eventContainer.onCreated(function() { 
    if (!Router.current().params._id) { // This means the template will be loaded from home so I need to redirect to right path with 
    let lastEvent = Meteor.users.findOne({_id:Meteor.userId()}).profile.lastEvent; 
    if (lastEvent){ 
     Router.go('/eventContainer/'+ lastEvent); 
    } else { 
     alert("Admin error: No exist previous event"); 
     Router.go("/findEvent"); 
    } 
    } 
}); 

そして、それがあったようにHTMLを聞かせて:

<template name="home"> 
    {{#if Template.subscriptionsReady}} 
    {{#if notEventJoined}} 
     {{> findEvent}} 
    {{else}} 
     {{> eventContainer}} 
    {{/if}} 
    {{else}} 
    Loading... 
    {{/if}} 
</template>