Meteor Helper检查平等

时间:2015-05-27 06:31:03

标签: javascript meteor meteor-blaze spacebars

有没有办法检查meteor helper中字符串的值?

让我说我有这个帮手

Template.example.helpers({
 typeOfVideo:function(videoType){

        var videoLink = GS.Gems.Collections.Gems.findOne({_id:this._id}).videoLink;

        if(videoLink.match(/youtube\.com/)){
            return "youtube";

        }else if(videoLink.match(/vimeo\.com/)){
            return "vimeo";

        }else{
            return "undefined"

        }
    }
})

现在我想检查视频是否等于Youtube,Vimeo或undefined,我可以通过返回true / false来做,但是因为还有更多我想知道什么类型的视频我正在处理

已尝试

{{#if typeOfVideo=youtube}} <!-- also {{#if typeOfVideo 'youtube'}}
            youtube
{{/if}}

{{#if typeOfVideo=vimeo}}
         vimeo
{{/if}}

模板渲染了所有的值(youtube,vimeo),我错过了什么?

1 个答案:

答案 0 :(得分:4)

由于Spacebars(流星模板系统)是一个无逻辑的&#34;模板系统(就像它所基于的Handlebars)你不能直接检查if语句中的相等性。

但你可以创建一个带有两个参数的global helper来检查字符串相等或匹配字符串,如下所示:

Template.registerHelper('isEqual', function(string, target) {
  if( string.match( new RegExp(target, 'g') ) ) {
    return true;
  }
  return false;
});

并在您的模板中使用它:

{{#if isEqual videoLink 'youtube'}}
  <p>Youtube</p>
{{else}}
  <p>Vimeo</p>
{{/if}}

Spacebars中没有else if,所以如果您有很多情况需要检查,那可能会很麻烦。 但是你可以考虑在可能的情况下直接从全局帮助器中注入模板/内容。