Meteor中的标签 - 了解显微镜示例

时间:2014-12-05 12:50:30

标签: meteor spacebars

我正试图从Discover Meteor的显微镜项目中了解这段代码:

https://github.com/DiscoverMeteor/Microscope/blob/master/client/templates/includes/header.js

通过向选项卡添加“活动”类来使页面上的当前路径选项卡处于活动状态,但是有些代码我不理解。具体做法是:

 return Router.current() && Router.current().route.getName() === name

我不明白名字的来源,以及为什么有必要。是否存在使用iron的路由案例:Router.current()不会返回true(例如服务器端路由)?

我也很困惑为什么在辅助函数中返回一个布尔值的原因:

 return active && 'active';

如果布尔值返回true,Spacebars是否只将'active'类应用于选项卡?如果是这种情况,有人可以指出有关如何使用Spacebars的更多信息吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

  

我不明白姓名的来源

name变量是传递给_.any迭代器函数(http://underscorejs.org/#some)的谓词函数的参数,所以基本上它是对辅助函数的每个参数的迭代(存储在args变量中)以查看它们中是否与谓词函数匹配。

如果助手的至少一个参数通过谓词测试,谓词函数的返回值为true,谓词测试将当前路由名称与当前迭代的值进行比较。

  

是否存在使用iron的路由案例:Router.current()赢得了路由器   返回true

顾名思义,

Router.current()是一个返回当前RouteController的被动数据源,因此它可能会在某个时刻返回非真实值(特别是在该应用程序首先被初始化。)

return active && 'active';

关于这一行JS,它与Spacebars几乎没有关系,它只是一个常见的JS技巧,其中包含一系列AND运算符的布尔表达式在遇到伪值时停止执行并返回解析最后一个值。

这意味着如果active为false,则它立即返回false,但如果它为true,则整个表达式返回'active'字符串。

涉及Spacebars的唯一地方是,当用作HTML属性值的帮助器计算为虚假值时,该属性不会进入DOM。

我个人使用这种语法,我觉得不那么模糊,但这主要是基于意见的。

return active?"active":"";