灰烬数据观察到混乱

时间:2014-11-20 21:14:00

标签: javascript ember.js ember-data

我有一个这样的模型:

App.Category = DS.Model.extend({
  title: DS.attr('string'),
  items: DS.hasMany('item', {async: true}),
  itemCount: function() {
    return this.get('items').get('length');
  }.property('items')
});

似乎我不能使用"属性"如果我想在每次用户添加或删除项目时都更新UI。

据我所知,我应该使用"观察",但当我用它代替"属性"把手{{itemCount}}标签只是将函数本身渲染为字符串。

非常感谢任何有关正确渲染的帮助。

2 个答案:

答案 0 :(得分:1)

我认为你可以简单地使用:

{{items.length}}

在你的车把模板中。

绝对不需要观察者,计算属性会自行更新。

如果你真的想要一个名为itemCount的计算属性,它将是:

itemCount: function() {
  return this.get('items.length');
}.property('items.length')

甚至更好:

itemCount: Ember.computed.alias('items.length')

答案 1 :(得分:1)

就像@ florent-blanvillain所说,只需使用Ember.computed.alias。但是在将来,当基于数组编写计算属性时,您需要使用@each语法来使其响应属性值的更改:

itemCount: function() {
  return this.get('items').filterBy('isSelected');
}.property('items.@each.isSelected')

这样的事情。有关详细信息,请参阅the docs on computed properties