如何在Meteor Js的某个URL路径中隐藏模板上的按钮?

时间:2015-04-10 16:43:30

标签: javascript meteor

我对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}}

关键!!它是路线名称而不是路线的路径

2 个答案:

答案 0 :(得分:2)

如果您使用的是iron:router package,则可以使用。

if(Router.current().location.get().path == 'some check'){
     $('#button').hide();//use jQuery
  }else{
    $('#show').hide();//use jQuery
 }

同时检查iron:location package

你也标记了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”。这使您可以灵活地将其用于任何路线。