Meteor.js 模板块中的“或”条件

Posted

技术标签:

【中文标题】Meteor.js 模板块中的“或”条件【英文标题】:'Or' condition in Meteor.js template blocks 【发布时间】:2015-01-10 21:07:54 【问题描述】:

有没有办法在 Meteor 模板中执行条件“和”或“或”?我想做的是这样的:

#if isInRole 'ADMIN' || isInRole 'INSPECTOR'
  ...do some stuff
/if

使用第 3 方软件包 alanning:roles 提供的帮助程序。这似乎在我使用 Meteor 的编码中多次出现,我可以并且已经解决了它,通常是通过复制块代码,但如果已经存在某种方法来处理 OR 或 AND 条件,那就太好了疯狂的旋转。

【问题讨论】:

【参考方案1】:

Meteor 使用基于车把的空格键。在车把中,现在有逻辑运算符的直接方式。

您可以通过创建Template.helper 来处理or 的小变通方法

Template.registerHelper("equals_or", function(param, arr) 
   arr = arr.split(",");
   if (arr.indexOf(param) !== -1) 
      return true;
    
   else 
     return false;
   
);

然后在 html 中就可以了

#if equals_or isRole "ADMIN,INSPECTOR"
  ...do some stuff
else
   ...do some other stuff
/if

我可能不是一个完美的解决方案,但它正在发挥作用。

也检查这个answer。

【讨论】:

一个助手可以这样调用另一个助手吗? isInRole 是由alanning:roles 包创建的全局模板助手。对于这个特定实例,我的另一种选择是编写更多自己的isInAnyRoles,它接受一个数组而不是单个角色。或者也许我应该修改alanning:roles 并回馈社区。可能对每个人来说都是更好的解决方案。 @CodeChimp 你最后真的更新了 alanning:roles 吗?因为逗号分隔功能现已推出! alanning.github.io/meteor-roles/classes/UIHelpers.html

以上是关于Meteor.js 模板块中的“或”条件的主要内容,如果未能解决你的问题,请参考以下文章

meteor.js 是如何更新模板数据的?

在 coffeescript 类中包装meteor.js 车把模板

比较空格键 #if 块中的模板帮助器值

% if % 块中的 Django 模板标签不显示

main.* 中的 Meteor JS javascript 文件仍然无法正确加载。加载顺序的最佳实践?

向 % if % 块中的自定义模板标签提供参数的语法