【问题标题】:Tabbing in Meteor - Understanding Microscope ExampleMeteor 中的 Tabbing - 了解显微镜示例
【发布时间】:2015-02-03 15:32:03
【问题描述】:

我正在尝试从 Discover Meteor 的显微镜项目中理解这段代码:

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

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

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

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

我也很困惑为什么一个布尔值与辅助函数中的类一起返回:

 return active && 'active';

如果布尔值返回 true,空格键是否仅将“活动”类应用于选项卡?如果是这样的话,有人可以指出更多关于这如何与空格键一起工作的信息吗?

非常感谢。

【问题讨论】:

    标签: meteor spacebars


    【解决方案1】:

    我不明白名字的来源

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

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

    是否存在使用 Iron:router 的路由案例,Router.current() 不会 返回真

    Router.current() 顾名思义,是一个返回当前RouteController 的响应式数据源,因此它可能会在某些时候返回一个不真实的值(尤其是在应用程序首次初始化时)。

    return active && 'active';
    

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

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

    唯一涉及空格键的地方是,当用作 HTML 属性值的帮助器评估为假值时,该属性不会进入 DOM。

    我个人使用这种语法,我觉得它不太晦涩,但这主要是基于意见的。

    return active?"active":"";
    

    【讨论】:

    • 帮助很大。谢谢:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    相关资源
    最近更新 更多