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.

4

2 に答える 2

7

ヘルパーをラップする単純な 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}}

ヘルパーは 2 番目の引数を解決し、ドットを前に付けて最初の引数に追加します。

編集: この動作は、カスタム ヘルパーなしで実現できるようになりました。この問題に対する現代的な解決策については、c4p の回答を参照してください。上記のソリューションは、Ember 1.0.0-rc.1 で最後にテストされました。

于 2013-03-05T08:37:15.013 に答える