Emberjs bindAttr id-prefix

时间:2013-07-15 20:49:52

标签: ember.js

我正在加载多个模型(使用ArrayController),其中ember-data明显返回并为每个模型返回id,我正在显示一些基于它的动态地图内容,它通过didInsertElement函数中的JS初始化。 所以我的hbs代码看起来像这样:

{{#each controller}}
    ....
    <div class="map" {{bindAttr id="id"}}>
    ....
{{/each}}

这很好,但我的问题是,我不只是想要div ID的id-number,但我想要它带有静态前缀:例如。 user-{{id}}。或者在我想要的不同路线上,例如news-{{id}} 有可能吗?

1 个答案:

答案 0 :(得分:3)

假设您可以在模型数据中存储前缀,您可以为此用例创建一个计算属性:

App.User = DS.Model.extend({
  ...
  prefixedId: function() {
    return "user-" + this.get('id');
  }.property('id')
});

App.News = DS.Model.extend({
  ...
  prefixedId: function() {
    return "news-" + this.get('id');
  }.property('id')
});

然后使用computed属性:

{{#each controller}}
  ....
  <div class="map" {{bindAttr id="prefixedId"}}>
  ....
{{/each}}