Ember.js 无法对余烬数据关系调用save

Ember.js 无法对余烬数据关系调用save,ember.js,ember-data,Ember.js,Ember Data,我想处理组件/表单中的关系。当我创建关系时,它工作得很好,但是当我尝试更新时,它失败了 import Ember from 'ember'; export default Ember.Component.extend({ store: Ember.inject.service(), init(){ this._super(...arguments); var adresseField=this.get('adresseAttributeField'); var

我想处理组件/表单中的关系。当我创建关系时,它工作得很好,但是当我尝试更新时,它失败了

import Ember from 'ember';

export default Ember.Component.extend({
  store: Ember.inject.service(),
  init(){
    this._super(...arguments);
    var adresseField=this.get('adresseAttributeField');
    var parent=this.get('parent');
    if (parent.get(adresseField).content==null) {
      this.set('adresse',this.get('store').createRecord('adresse'));
    }else{
      this.set('adresse',parent.get(adresseField));
    }
  },
  actions:{
    saveAdresse(adresse){
      console.log(adresse);
      var parent=this.get('parent');
      var adresseField=this.get('adresseAttributeField');
      adresse.save().then(()=>{
        if(parent.get(adresseField)!=adresse){
          parent.set(adresseField,adresse)
          parent.save()
        }
      }),()=>{
      }
    }
  }
});
触发SaveAddress并更新地址时,会出现错误消息:

address.save不是一个函数

创建ADRESE时,组件工作正常

当我检索现有关系时,我认为我的问题在init中:

this.set('adresse',parent.get(adresseField))


但是,我无法准确地确定问题所在。

这里的问题可能是
adresseField
是一种异步关系。对于这种关系,Ember数据将返回一个称为promise代理对象的对象。这样,一旦关系解决,Ember就可以访问属性。但是,方法不是代理的,因此它告诉您,
adresseField
没有该方法

您需要在
中访问已解析的关系。然后
块:

parent.get(adresseField).then(result => {
  this.set("adresse", result);
});

问题可能在于它是一种异步关系。您可以通过调用
。然后在promise上设置属性来解决这个问题,但这可能会导致异步的副作用。实际上,当您在组件中时,您希望所有数据都可供您使用,而无需进行异步调用


如果可能的话,您最好在路由级别卸载该数据,以便知道此时该数据可用

错在哪里?怎么了,谢谢,我完全忘了放