有没有办法在 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/