2
假設下面型號:Ember store.push with hasMany不更新模板?
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)
使用灰燼督察(Chrome擴展程序),我可以看到會話的用戶被推倒,並存在與正確的關係商店,但該模板未被更新。
當使用store.createRecord模板實際上得到更新,但我想使用push/pushPayload,以便我可以使用現有的序列化器。
您的路線看起來像只找到一個會話,但您正在迭代數組。 – Kingpin2k
n/m,我看到你的session_users是會話下的一個變量。 – Kingpin2k
如果您在推送後立即呼叫查找,它是否會加載? – Kingpin2k