javascript - Ember store.push with hasMany 不更新模板?

标签 javascript ember.js ember-data

假设以下模型:

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 - Ember store.push with hasMany 不更新模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19733900/

相关文章:

ember.js - Ember Handlebars 辅助 View 未更新

javascript - JavaScript 中数组集的 bool 运算

javascript - 使用复选框有条件地更新 Bing map 上的标记

javascript - Ember 中的详细日志记录

ember.js - 没有sudo无法安装Ember-CLI

ember.js - 如何将 currentUser 注入(inject)所有其他用户模型

Ember.JS -toggleProperty 切换列表中的所有项目

javascript - 在 Ember-data 中以自定义方式保存属性

javascript - 如何获取 knockoutjs 可观察数组的下一个元素?

javascript - 在 Vue 组件中链接不同的 API 调用,包括带有 for 循环的调用