假设以下模型:
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扩展程序)我可以看到会话用户被推送并且存在于具有正确关系的商店中,但模板未更新。
当使用 store.createRecord 时,模板实际上正在更新,但我想使用push / pushPayload以便我可以使用现有的序列化器。
答案 0 :(得分:5)
我很确定这是一个已知的错误。我们使用websocket做类似的事情:在我们推送有效负载以创建记录之后,我们手动调用addObject
将其添加到hasMany关系,例如。
var comment = store.push('comment', payload);
post.get('comments').addObject(comment);