javascript - Meteor Helper 检查相等性

标签 javascript meteor meteor-blaze spacebars

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

假设我有这个 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 或未定义,我可以通过返回 true/false 来完成,但由于还有更多我想知道我正在处理的视频类型

已经尝试过

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

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

模板呈现所有值(youtube、vimeo),我缺少什么?

最佳答案

由于 Spacebars(Meteor 模板系统)是一个“无逻辑”模板系统(类似于它所基于的 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,所以如果你有很多情况要检查它可能会很麻烦。 但是您可以考虑在可能的情况下直接从全局助手中注入(inject)模板/内容。

关于javascript - Meteor Helper 检查相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30474799/

相关文章:

javascript - 如何设置位于PC上的图像文件

javascript - meteor.js - 在哪里调用集合查找

ios - Meteor cordova 插件 webapp 无法在 Xcode 8 上构建

javascript - Meteor:定义可用于方法的服务器功能

templates - Blaze View 和模板之间有什么关系?

javascript - 如何将所选属性添加到 Meteor Blaze 中的下拉选项标签?

javascript - 用户在 Meteorjs 中登录时登录屏幕闪烁

javascript - 这是 Closure 的正确陈述吗?

javascript - 根据两个输入的太阳替换输入值

javascript - Angularjs debounce 正在清除我的 radio 输入