簡體   English   中英

如何在ember中使linkTo動態化?

[英]How to make linkTo dynamic in ember?

<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

在當前的Ember(本文中的1.10)中,助手現在接受將在當前上下文中作為屬性查找的引用參數或參數。 我相信這在Ember 1.2( 更改日志 )中有所改變

如果引用,該參數將用作字符串:

{{#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

您可以注冊一個簡單的Handlebars幫助程序,它包裝了linkTo幫助程序。

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);
});

然后在你的模板中你可以寫:

{{#each menuItems}}
    <li>{{#myLinkTo "dashboard" name this}}{{name}}{{/myLinkTo}}</li>
{{/each}}

幫助器將解析第二個參數並將其附加到第一個參數,前面加一個點。

編輯:現在可以在沒有自定義幫助程序的情況下實現此行為。 請參閱c4p的答案 ,了解當前解決此問題的方法。 上述解決方案最后使用Ember 1.0.0-rc.1進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM