如何使用流星模板助手编辑铁路由器中作为参数传递的值?

pre*_*ton 5 javascript meteor iron-router spacebars

如何使用模板助手编辑传递给使用pathForiron-router方法创建的路由的参数值?

我有这个模板助手:

Template.registerHelper('slugify', function(obj){
  return _.slugify(obj);
});
Run Code Online (Sandbox Code Playgroud)

在我的.html文件中我有这个:

{{#each menuItemsFromDB}}
          {{#each arrayOfMenuItems}}
          <a class="item category" href="">
          {{this}}
          </a>
          {{/each}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)

{{this}}上面的代码返回一个字符串,该类别的名称.因为我已经注册了模板助手,所以我可以通过以下方式来解决这个类别:

{{slugify this}}
Run Code Online (Sandbox Code Playgroud)

然后我有这条路线:

this.route('List',{
    path: '/list/:category_slug',
    template: 'list',
    controller: 'ListController'
  });
Run Code Online (Sandbox Code Playgroud)

我可以链接到此路由并通过以下方式将参数传递给此路由:

{{pathFor 'List' category_slug='the-value-i-passed'}}
Run Code Online (Sandbox Code Playgroud)

但那将是难以编码的,它无法达到我想要的预期效果.
我希望它是动态的,使用'slugify'模板助手和铁路由器的pathFor方法,并使用值{{this}}.

我想要实现的是这样的,虽然下面的代码不起作用:

{{pathFor 'List' category_slug={{slugify this}} }}
Run Code Online (Sandbox Code Playgroud)

通过以上线路实现我正在努力实现的目标是什么?

我希望我可以这样做:

{{pathFor 'List' category_slug=slugify(this) }}
Run Code Online (Sandbox Code Playgroud)

要么

{{pathFor 'List' category_slug='{{slugify this}}' }}
Run Code Online (Sandbox Code Playgroud)

sai*_*unt 4

长话短说,您正在寻找的内容尚未使用当前语法实现,尽管它是 Handlebars 标准实现的一部分,而 Meteor Spacebars 正是基于该标准实现。

目前,您必须创建一个单独的帮助器来处理您的输入并在pathFor.

JS

Template.myTemplate.helpers({
  slugified: function(){
    return _.slugify(this);
  }
});
Run Code Online (Sandbox Code Playgroud)

空格键

{{pathFor 'List' category_slug=slugified}}
Run Code Online (Sandbox Code Playgroud)

请注意,Handlebars 子表达式支持计划在不久的将来实现,甚至可能根据此 PR 进入 Meteor 的下一版本:https ://github.com/meteor/meteor/pull/4101