如何在hbs模板中访问模型的元数据或静态数据

时间:2016-06-22 13:28:26

标签: ember.js ember-data

我有这样的模型

var model = Model.extend({
  id: attr(),
  profileName: attr(),
  email: attr(),
  role: attr(),
  ...
});

现在我需要附加一些元数据/静态属性。

var model = Model.extend({
  id: attr(),
  profileName: attr(),
  email: attr(),
  role: attr(),
  ...
  viewOrder: Ember.computed(function() {
      return [get(this, 'id'), get(this, 'email'), get(this, 'role'), get(this, 'profileName'), ...];
  }),
  viewColNames: Ember.computed(function() {
      return ['Id', 'Email', 'Role', 'Username', ...];
  })
});

然后在视图中我得到了类似的东西:

<tbody>
  {{#each model as |userprofile|}}
    <tr>
      {{#each userprofile.viewOrder as |order|}}
      <td>{{order}}</td>
      {{/each}}
    </tr>
  {{/each}}
</tbody>

哪个不好,但它有效,但我也想做那样的事情:

<thead>
  <tr>
    {{#each model.viewColNames as |colName|}}
    <th>{{colName}}</th>
    {{/each}}
  </tr>
</thead>

(我知道这不起作用)

所以我的问题是如何在模板中读取模型的静态属性甚至更好,将元数据(viewOrder,viewColNames)设置为模型,然后在模板中读取它,或者是否还有其他更好的方法来处理这种情况。

由于

1 个答案:

答案 0 :(得分:0)

所以你试图动态地在Ember数据模型中定义所有字段?

内置的每个帮助都能够迭代对象内的键。由于Ember Data模型只是Ember对象,因此它也适用于它们:

https://guides.emberjs.com/v2.6.0/templates/displaying-the-keys-in-an-object/

还有一篇博客文章,它被添加到ember中,其中包含有关此帮助程序的详细信息:

http://emberjs.com/blog/2015/08/16/ember-2-1-beta-released.html#toc_code-each-in-code-helper

因此,在您的模板中,您可以执行以下操作:

ALTER TABLE Directions ADD RevisedLat CAST(Latitude*3200/90 AS INT)

希望有所帮助