【问题标题】:should a computed property be declared in a model or controller?应该在模型或控制器中声明计算属性吗?
【发布时间】:2013-03-28 19:57:58
【问题描述】:

具有以下用户模型:

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}}

但它是在模型中的时候。

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

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

    您仍然可以在有意义的情况下将计算属性放在控制器上,但我想像“fullName”这样的属性可以在您的应用程序中的多个位置使用(并且在控制器中使用它会迫使您复制应用程序不同部分的工作量)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 2014-05-26
      • 1970-01-01
      相关资源
      最近更新 更多