只是想知道是否有办法通过其他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函数,但在我看来似乎是一种解决方法。
答案 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>