2

次のモデルを想定しています。

App.User = DS.Model.extend(
  email: DS.attr('string')
  session_users: DS.hasMany('sessionUser')
)

App.SessionUser = DS.Model.extend(
  user: DS.belongsTo('user')
  state: DS.attr('string')
  session: DS.belongsTo('session')
)

App.Session = DS.Model.extend(
  title: DS.attr('string')
  session_users: DS.hasMany('sessionUser')
)

ルートsession_route.js.coffee :

App.SessionRoute = Ember.Route.extend(
  model: (params) ->
    this.store.find('session', params.id)
)

そして、次のsession.hbsテンプレート:

{{#each session_users}}
    {{state}}
{{/each}}

WebSocket ストリームに接続しています。新しい SessionUser が作成されると、通知が届きます。
ここでは、ペイロードのプッシュをテストするためのsessions_controller.js.coffeeを示します。

payload =
    id: 20
    user: controller.store.getById('user', 2)
    session: controller.store.getById('session', 2)
    state: 'confirmed'
  controller.store.push('sessionUser', payload)

Ember Inspector(Chrome Extension) を使用すると、セッション ユーザーがプッシュされ、適切な関係でストアに存在することがわかりますが、テンプレートは更新されていません。store.createRecord
を使用すると、テンプレートは実際に更新されますが、既存のシリアライザーを使用できるように、push/pushPayload を使用したいと考えています。

4

1 に答える 1