Javascript 计算属性应放置在何处?

Javascript 计算属性应放置在何处?,javascript,ember.js,Javascript,Ember.js,在模型或控制器中放置计算属性的正确位置在哪里 我见过一些例子,其中计算属性被放置在控制器中,而其他属性被放置在模型中。在我的应用程序中,我在模型中使用它: App.Item = DS.Model.extend({ description: DS.attr('string'), quantity: DS.attr('number'), price: DS.attr('number'), total: function() { return this.get('quantit

在模型或控制器中放置计算属性的正确位置在哪里

我见过一些例子,其中计算属性被放置在控制器中,而其他属性被放置在模型中。在我的应用程序中,我在模型中使用它:

App.Item = DS.Model.extend({
  description: DS.attr('string'),
  quantity: DS.attr('number'),
  price: DS.attr('number'),
  total: function() {
    return this.get('quantity') * this.get('price');
  }.property('@each'),
});

我不知道这是否是放置它的正确位置,以及将它放在模型或控制器中的含义是什么。

这取决于属性的使用,它是否将在整个应用程序中使用,然后它属于模型,如果它仅在单个控制器的上下文中使用,把它放在控制器上

此外,在您的示例中,您的计算属性应该这样定义

total: function() {
  return this.get('quantity') * this.get('price');
}.property('quantity', 'price'),

意见不同,但我喜欢胖模特