应该在模型或控制器中声明计算属性吗?

时间:2013-03-27 13:14:49

标签: ember.js ember-data

拥有以下用户模型:

Sks.User = DS.Model.extend
  firstName: DS.attr("string")
  lastName: DS.attr("string")

应该在哪里声明'fullName'计算属性?

  fullName: Ember.computed(->
    firstName = @get("firstName")
    lastName = @get("lastName")
    firstName = ""  if firstName is `undefined`
    lastName = ""  if lastName is `undefined`
    lastName + " " + firstName
  ).property("firstName", "lastName")

它应该在'UsersController'中还是直接在模型中? Ember文档说只在会话中使用的字段应该写在控制器中。但问题是我无法在索引模板中访问'fullName':

Sks.IndexController = Ember.Controller.extend
  needs: ['users']

此处,'fullName'无法访问(在控制器中声明)

{{#each user in controllers.users}}
  <li>{{user.fullName}}</li>
{{/each}}

但它是在模型中的时候。

1 个答案:

答案 0 :(得分:5)

在这种情况下,我认为模型是计算属性的正确位置,因为只有拥有firstname和lastname属性才有意义。

你仍然可以在有意义的时候在控制器上放置计算属性,但是我想像“fullName”这样的属性可以在你的应用程序中的多个地方使用(并且在控制器中有这个属性会强制你复制努力跨越app的不同部分)