2014-09-24 59 views
0

我们有一个简单的一对多关系(不注重破复数):由于服务器使用相当生病JSON格式,我们实现了自己的加载一对多关系同步

QuickOrder = DS.Model.extend({ 
     quickOrderAddresss: DS.hasMany('quickOrderAddress', { 
      async: true 
     }) 
    }); 

QuickOrderAddress = DS.Model.extend({ 
     quickOrder: DS.belongsTo('quickOrder'), 
     ... 
     state: DS.attr('string'), 
     city: DS.attr('string'), 
     street: DS.attr('string') 
     ... 
    }); 

适配器,能够通过ID搜索命令:

QuickOrderAdapter = DS.Adapter.extend({ 

     find: function(store, type, id) { 
      ......... 
      return new Ember.RSVP.Promise(function(resolve, reject) { 
       jQuery.getJSON(addressesUrl).then(function(data) { 

        //lots of ugly stuff here 

        Ember.run(null, resolve, result); 
       }, function(jqXHR) { 
        jqXHR.then = null; // tame jQuery's ill mannered promises 
        Ember.run(null, reject, jqXHR); 
       }); 
      }); 
     } 
    }); 

现在我们要删除async: true和使用async: false代替。你能否给我一个JSON格式的示例,如果加载是同步的,那么ember数据会期望这种格式。

回答

1

答案在Ember指南(http://emberjs.com/guides/models/the-rest-adapter/#toc_sideloaded-relationships)。

喜欢的东西:

{ 
    "quickOrder": { 
    "id": 1, 
    "quickOrderAddresss": [1,2] 
    },  
    "quickOrderAddress": [{ 
    "id": 1, 
    "quickOrder": 1, 
    //blah blah more stuff 
    },{ 
    "id": 2, 
    "quickOrder": 1, 
    //blah blah more stuff 
    }, 
} 
+0

请注意,我拼写错误“quickOrderAddresss”你是上面,但它不应该影响你的成绩。 – 2014-09-24 22:06:45

+0

该链接现在已被打破。 – carter 2016-09-01 17:23:54