gpt4 book ai didi

javascript - 带有 hasMany 的 Ember store.push 不更新模板?

转载 作者:行者123 更新时间:2023-11-29 17:13:53 35 4
gpt4 key购买 nike

假设以下模型:

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 扩展)我可以看到 session 用户被推送并且存在于具有正确关系的商店中,但是模板没有更新。
使用 store.createRecord 时,模板实际上正在更新,但我想使用 push/pushPayload 以便我可以使用现有的序列化程序。

最佳答案

我很确定这是一个已知错误。我们用 websocket 做一些类似的事情:在我们推送有效负载以创建记录之后,我们手动调用 addObject 将其添加到 hasMany 关系中,例如

var comment = store.push('comment', payload);
post.get('comments').addObject(comment);

关于javascript - 带有 hasMany 的 Ember store.push 不更新模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19733900/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com