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)
长话短说,您正在寻找的内容尚未使用当前语法实现,尽管它是 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
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |