2013-03-05 77 views
8
<script type="text/x-handlebars" data-template-name="patient"> 
    <ul class="nav"> 
    {{#each menuItem in menuItems}} 
     <li>{{#linkTo "dashboard.summary" menuItem}}{{menuItem.name}}{{/linkTo}}</li> 
    {{/each}} 
    </ul> 
    {{outlet}} 
</script> 

在上面的代碼中,如何使linkTo成爲動態鏈接而不是硬編碼的「dashboard.summary」?例如,"dashboard."+menuItem.name如何使鏈接動態在燼?

+0

我不認爲這是可能的,但你不應該需要爲每個模型無論如何獨立的路線。你能否更詳細地解釋你想要完成的事情? – ahmacleod 2013-03-05 05:55:35

+0

我有一個menuItems列表,我從DB中獲取,對應於每個菜單項我想要一個不同的路線。菜單Items是彙總結果meds命令vsio notes演示訪問。點擊他們每個人我被帶到不同的屏幕 – Swapnil 2013-03-05 06:22:17

回答

7

您可以註冊一個包裝linkTo幫手的簡單Handlebars幫手。

var linkTo = Ember.Handlebars.helpers.linkTo; 
Ember.Handlebars.registerHelper('myLinkTo', function(name, suffixPath) { 
    var suffix = Ember.Handlebars.get(this, suffixPath);  
    arguments = [].slice.call(arguments, 2); 
    arguments.unshift(name + '.' + suffix); 

    return linkTo.apply(this, arguments); 
}); 

然後在你的模板,你可以寫:

​​

的助手將解決第二個參數,並將它添加到第一,用一個點之前。

編輯:此行爲現在可以在沒有自定義幫助的情況下實現。請參閱c4p's answer以解決此問題的當代解決方案。上面的解決方案最後使用Ember 1.0.0-rc.1進行了測試。

+0

嗨..其工作.. @ ahmacleod非常感謝您的幫助... :) – Swapnil 2013-03-05 08:51:00

+0

嗨,我試過這個,但我得到異常: 未捕獲[對象對象] at handlebars-1.0.0-rc.4.js:707 你使用哪個handelbars和ember版本? – Sobis 2013-06-13 08:14:13

+0

哪裏是來自slice.call的參數? 你如何將其轉換爲ember-cli/es6? – NullVoxPopuli 2015-05-18 16:51:00

13

在當前的Ember中(本文後面的1.10),幫助者現在接受引用的參數或參數,這些參數或參數將在當前上下文中被查找爲屬性。我相信這在Ember 1.2中有所變化(change log)。

如果報價,參數將作爲一個字符串:

{{#link-to 'post'}}Posts{{/link-to}} 

如果沒有報價,參數將在目前情況下擡起頭來:

{{#link-to routeName}}Go To '{{routeName}}'{{/link-to}} 

這將是一個鏈接 - 指向當前設置爲routeName屬性的任何值。這可以動態更新。

下面是一個例子JSBin顯示這個動作:http://emberjs.jsbin.com/nelafep/1/edit?html,css,js,output

+1

你碰巧知道一種動態傳遞參數的方法嗎? – 2016-01-20 16:23:26

+1

這是最新的答案。 – sheriffderek 2016-03-01 19:31:23

+0

注意(此時Ember爲2.16)這很好:'{{#link-to(concat baseRoute「.edit」)模型}}編輯{{/ link-to}}' – charneykaye 2017-12-22 22:50:02