重定向到模板而不是在当前模板内呈现

时间:2016-05-30 18:48:03

标签: meteor

只是想知道是否有办法通过其他html模板内的调用重定向到模板。实际上我在主页模板中使用{{> myTemplate}},但这会在同一个主路线('/')中呈现“myTemplate”。

为什么我需要它:“myTemplate”需要一个路由器参数来完成它的所有功能,所以我想用这样的东西来调用它:

<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>

其他方法是做一个“临时模板”并调用此Router.go('eventContainer/'+ getLastEventWatched)的onCreated函数,但在我看来似乎是一种解决方法。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

我最终做的是在onCreated函数的同一个eventContainer模板中添加重定向。

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>