Javascript Emberjs-直接调用嵌套资源';s网址

Javascript Emberjs-直接调用嵌套资源';s网址,javascript,ember.js,Javascript,Ember.js,我将这两个问题(和一个JsBin示例)合并在一起: 如果您浏览客户->信息->联系人,它可以正常工作,但如果您直接呼叫客户联系人,它将中断,例如: 加载路由时出错:customer.contact无法设置未定义类型的属性“store”错误:无法设置未定义类型的属性“store”当您请求单个记录时,它使用不同的序列化程序终结点,并希望数据采用不同的格式。它期望的格式是: { customer: { id: 1, currency:1 }, currencies: [

我将这两个问题(和一个JsBin示例)合并在一起:

如果您浏览客户->信息->联系人,它可以正常工作,但如果您直接呼叫客户联系人,它将中断,例如:


加载路由时出错:customer.contact无法设置未定义类型的属性“store”错误:无法设置未定义类型的属性“store”

当您请求单个记录时,它使用不同的序列化程序终结点,并希望数据采用不同的格式。它期望的格式是:

{
  customer: {
    id: 1,
    currency:1
  },
  currencies: [
    {
      id:1,
      prop: 'foo'
    }
  ]
}
序列化程序中的端点是
extractSingle
。请随意提取
extractArray
中相似的部分,并与他人分享

假装你的有效载荷是:

  {
    customer:{
      id:3,
      name:"Joue",
      currency:{
        id:5,
        iso_code:"BDT"
      }
    } 
  }
您的
extractSingle
将是

  extractSingle: function(store, type, payload, id) {
    var customer = payload.customer,
        currencies = [];


    var currency = customer.currency;
    delete customer.currency;
    if(currency){
      currencies.push(currency);
      customer.currency = currency.id;
    }

    payload = { customer:customer, currencies: currencies };

    return this._super(store, type, payload, id);
  }
下面是一个示例,其中包含对客户3的响应

您的属性名称应该在模型内部匹配,并且根名称(此处的货币)应该是记录类型的复数版本

{
  customer: {
    id: 1,
    default_currency:1
  },
  currencies: [
    {
      id:1,
      prop: 'foo'
    }
  ]
}

国王:再次谢谢你!!如果我用“默认货币”而不是“货币”怎么办。我必须用骆驼套吗?在我的应用程序中,一切正常,只有当我使用默认的\u currency=DS.belongsTo('currency')时,才会出错。我找不到任何不同之处。问题。我也要为此设置一个JsBin。