我对Meteorjs很陌生,但发现它很棒。
我想知道根据路由/网址隐藏模板元素的最佳方法是什么。因为我想在其他地方再次使用相同的模板,但没有其中的某些元素。
由于
我的代码根据以下解决方案
我的助手
Template.postItem.helpers({
ownPost: function() {
return this.userId === Meteor.userId();
},
commentsCount: function() {
return Comments.find({postId: this._id}).count();
},
routeNameEqual: function(name){
var routeName= Router.current().route.getName();
return routeName === name;
}
});
我的HTML
{{#if routeNameEqual 'postsList2' }}
<a href="{{pathFor 'postPage'}}" class="discuss btn btn-default">Learn More</a>
{{else}}
{{/if}}
关键!!它是路线名称而不是路线的路径
答案 0 :(得分:2)
如果您使用的是iron:router package,则可以使用。
if(Router.current().location.get().path == 'some check'){
$('#button').hide();//use jQuery
}else{
$('#show').hide();//use jQuery
}
你也标记了javascript,所以这是使用javascript的另一个解决方案
if(document.URL == 'some check'){ // or use window.location.href
$('#button').hide();//use jQuery
}else{
$('#show').hide();//use jQuery
}
答案 1 :(得分:1)
如果解析路径似乎很乏味,你也可以使用Route 名称(再次假设铁:路由器)
Router.current().route.getName()
如果你想避免操纵DOM,或者你想避免首先在模板中包含内容,那么使用模板助手
HTML:
<template name="foo">
{{#if routeNameEqual 'bar'}}
.. content
{{/else}}
.. alternate content
{{/if}}
</template>
JS:
Template.foo.helpers({
routeNameEqual: function(name){
return Router.current().route.getName() === name;
}
});
请注意,这里的帮助程序需要一个'name'参数,它是路径名。在HTML中,我们要查看路由名称是否为“bar”。这使您可以灵活地将其用于任何路线。