有人能解释一下如何#ifeq吗/section键使用handle.js工作

Can someone explaine how #ifeq ../section key works using handlebar.js

本文关键字:section 工作 js handle #ifeq 能解释 一下      更新时间:2023-09-26

我目前正在为我的网站使用Handlebar.js,我的一个视图中有以下代码:

{{# each navLinks}}
  {{#ifeq ../section key}}
    {{key}}
  {{else}}
  {{/ifeq}}
{{/each}}

然后在我的中间件中,我有:

locals.navLinks = [
  { label: 'Projects', key: 'projects', href: '/projects' },
  { label: 'Journey', key: 'journey', href: '/journey' },
  { label: 'Social media', key: 'social', href: '/social' },
  { label: 'Reach me', key: 'contact', href: '/contact' }
];

还有一个辅助功能:

// standard hbs equality check, pass in two values from template
// {{#ifeq keyToCheck data.myKey}} [requires an else blockin template regardless]
_helpers.ifeq = function(a, b, options) {
    if (a == b) {
        return options.fn(this);
    } else {
        return options.inverse(this);
    }
};

我理解{{# each navLinks}}意味着它通过locals.navlinks的数组。

但是{{#ifeq ../section key}}是如何工作的呢?我看不到对数组中任何对象键或名为..的键的任何引用/节,也没有在{{#if之后引用eq

此外,{{# each navLinks}}{{#ifeq ../section key}}中的#的用途是什么?

最后,我的最终目标是在我看来用车把写一些东西,比如:

if ( navlinks.key === 'projects' ) {
  class="A"
} else {
  class="B"
}

任何解释都很好。

谢谢你的帮助。

Jules

所以我想明白了。原因是/内容是因为每个视图都有自己的模块。在这种情况下,存在`locals.section='nameOfView';

因为它在{{# each...块中,所以从中检索content数据的唯一方法是使用../转到它的父级。

因此,为了让我在页面上做一个简单的检查,我使用了以下脚本:

{{#ifeq section "journey"}}it'sTrue{{else}}it'sFalse{{/ifeq}}

就是这样。我唯一还没有弄清楚的是#部分。