1

这个问题一定很容易回答,虽然我被卡住了......

  • 余烬 1.0.0
  • 车把 1.0.0

我定义了以下(简化的)助手来生成一个 url:

Ember.Handlebars.helper('imageUrl', function(basename) {
  return 'http://lorempixel.com/400/200/' + basename;
});

从模板调用这个助手:

<ul>
  {{#each}}
    <li><img src={{imageUrl name}}></li>
  {{/each}}
</ul>

将输出包装在脚本标签中,而不是输出预期的 url:

...
<li>
  <img src="<script" id="metamorph-6-start" type="text/x-placeholder">
  http://lorempixel.com/400/200/sport
  <script id="metamorph-6-end" type="text/x-placeholder"></script>&gt;

我不希望这个属性成为我模型的一部分,所以我通过用控制器表示每个项目并在这个控制器中定义 imageUrl 来解决这个问题。但这感觉太复杂了:

<ul>
  {{#each itemController="myItem"}}
    <li><img {{bind-attr src=imageUrl}}></li>
  {{/each}}
</ul>


App.MyItemController = Em.ObjectController.extend({
  imageUrl: function(){
    return 'http://lorempixel.com/400/200/' + this.get('name');
  }.property('name');
});

我如何使用助手来完成此任务?

4

1 回答 1

1

我认为你可以无限地使用你的助手

<ul>
  {{#each}}
    <li><img src={{unbound imageUrl name}}></li>
  {{/each}}
</ul>

来自 github 中的合并 PR https://github.com/emberjs/ember.js/pull/1817

Helpers declared as bound can be invoked by their unbound former via the unbound helper: {{unbound foo prop1 prop2}}
于 2013-10-22T10:15:09.937 回答