Ember:一对一关系(DS.belongsTo)没有设置反向关系

时间:2014-04-20 03:26:56

标签: javascript ember.js

tl; dr:在this page上,点击"是" - parent.id"伟大......"没有设定。点击"也许"然后"是"再次 - 现在parent.id0。为什么第一次没有设置?

此处my code

我制作了一种decision tree,其中每个节点(card)都有多个儿童选择。我这样定义了这种关系:

App.Card = DS.Model.extend
  child: DS.belongsTo('card', inverse: 'parent')
  parent: DS.belongsTo('card', inverse: 'child')
  question: DS.attr('string')
  answers: DS.hasMany('answer', async: true, inverse: 'card')

我将孩子设置为CardController#answer

answer: (answer) ->
  console.log "answering"
  @get('model').set('child', answer.get('card'))

这很好用,但它没有设置关系。

您可以点击蓝色yes按钮验证这一点:"嗨约翰......"卡片child.id更改为1,但子卡parent.id(" Great ..."卡)为空。

但这里有一个奇怪的部分:如果你切换"嗨约翰......"的孩子几次(点击maybe,然后回到{ {1}}),然后设置了孩子的yes

为什么儿童卡的parent.id第一次被设置?

1 个答案:

答案 0 :(得分:0)

来自freenode.net上的alexspeller的IRC用户#emberjs

  

这可能是一个错误但它可能会被[单一真相来源]分支修复

来自Ember的THE ROAD TO EMBER DATA 1.0

  

TL; DR Ember Data 1.0即将推出。在我们可以自信地保证不破坏API之前,我们还有一些最后的功能。具体做法是:

     
      
  1. 保证如果双向关系的一方发生变化,另一方将保持同步,即使它尚未加载。
  2.   

所以这可能是Ember Data 1.0中的一个错误。我将探索另一种Ember数据存储Ember Model,它更稳定并支持一对一的关系。