5

次のユーザーモデルを持つ:

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

ただし、それはモデルの場合です。

4

1 に答える 1

5

この場合、firstname 属性と lastname 属性がある場合にのみ意味があるため、モデルは計算されたプロパティに適した場所だと思います。

理にかなっている場合は、計算されたプロパティをコントローラーに配置することもできますが、「fullName」のようなプロパティをアプリケーション全体の複数の場所で使用できると思います (コントローラーでこれを使用すると、別の場所で同じ作業を繰り返さなければならなくなります)。アプリの一部)

于 2013-03-28T11:57:58.937 に答える