2015-05-08 29 views
5

如何使用模板幫助程序編輯我傳遞到使用鐵路由器的pathFor方法創建的路徑的參數的值?如何使用流星模板助手來編輯在Iron-Router中作爲參數傳遞的值?

我有這個模板幫手:

Template.registerHelper('slugify', function(obj){ 
    return _.slugify(obj); 
}); 

在我的.html文件我有這樣的:

{{#each menuItemsFromDB}} 
      {{#each arrayOfMenuItems}} 
      <a class="item category" href=""> 
      {{this}} 
      </a> 
      {{/each}} 
{{/each}} 

在上面的代碼中{{this}}返回一個字符串,該類別的名稱。 因爲我已經註冊了一個模板幫助,我可以SLUGIFY這一類人:

{{slugify this}} 

,然後我有這樣的路線:

this.route('List',{ 
    path: '/list/:category_slug', 
    template: 'list', 
    controller: 'ListController' 
    }); 

我可以鏈接到這個路線和參數傳遞給這條路線通過:

{{pathFor 'List' category_slug='the-value-i-passed'}} 

但是,這將是它的硬編碼,它不能達到我想要的結果。
我希望它是動態的,通過使用'slugify'模板助手和鐵路由器的pathFor方法,並使用{{this}}的值。

我試圖做到的,是這樣的,雖然下面這段代碼不起作用:

{{pathFor 'List' category_slug={{slugify this}} }} 

有什麼解決辦法,實現什麼我「想」,實現與上述行????

我希望我可以這樣做:

{{pathFor 'List' category_slug=slugify(this) }} 

{{pathFor 'List' category_slug='{{slugify this}}' }} 

回答

4

長話短說,你正在尋找使用當前語法尚未實現的東西,雖然它的一部分Handlebars標準實施的基礎上,流星Spacebars的基礎。

目前,您必須創建一個單獨的助手,使您的輸入隆重並在pathFor內調用它。

JS

Template.myTemplate.helpers({ 
    slugified: function(){ 
    return _.slugify(this); 
    } 
}); 

Spacebars

{{pathFor 'List' category_slug=slugified}} 

注意車把子表達式的支持是在不久的將來計劃,根據該PR甚至可能做它的方式,以流星的下一個版本: https://github.com/meteor/meteor/pull/4101

相關問題