HasMany – 属于RESTAdapter Ember.js

试图用RESTAdapter创build一个有很多属于的东西。 实质上,我有一个卡(叽叽喳喳用户),有许多主题标签。 我正在使用ember-cli。

我的模特:

//models/card.js import DS from 'ember-data'; export default DS.Model.extend({ handle: DS.attr('string'), bio: DS.attr('string'), avatar: DS.attr('string'), hashtags: DS.hasMany('hashtag') }); //models/hashtag.js import DS from 'ember-data'; export default DS.Model.extend({ title: DS.attr('string'), print: DS.attr('boolean'), card: DS.belongsTo('card') }); 

我的卡路线

 import Ember from 'ember'; export default Ember.Route.extend({ model: function(){ return this.store.createRecord('card'); }, actions: { submitHandle: function () { var card = (this.currentModel); var store = this.store; var hashtag = store.createRecord('hashtag'); card.set("bio", "testbio"); card.set("avatar", "twitter.com/129012931/img_original.jpg"); hashtag.set("title", "EmberJS"); hashtag.set("print", false); hashtag.set("card", card); card.get('hashtags').addObject(hashtag); card.save(); } } }); 

在我的路线中,当用户input一个叽叽喳喳的名字,我正在制作一个虚拟卡和标签。 我将标签添加到贺卡标签。 在余烬上这一切都很好。 如果我不打电话给card.save(),那么卡片和哈希标签按照预期相关联。 当我调用.save()发布的请求是:

 card: {handle: "@testing123", bio: "testbio", avatar: "twitter.com/129012931/img_original.jpg"} 

没有提及标签。

我正在使用sails作为后端似乎保存任何提供的请求。

如果我尝试类似:hashtag.save()。then(function(){card.save()});

我尝试过,因为我想我可能需要从服务器的标识号码之前,Ember可以将它与卡片。 哈希标签请求如下:

 {"hashtag":{"title":"EmberJS","print":false,"card":null}} 

而卡的要求:

 {"card":{"handle":"@wiolsid","bio":"testbio","avatar":"twitter.com/129012931/img_original.jpg"}} 

一些新手的考虑。

  1. 尝试创build一个像这样的标签:

     var hashtag = store.createRecord('hashtag', {card: card}); 

    那么你不需要card.get('hashtags').addObject(hashtag);

  2. 在保存父模型之前保存子模型。

这是我创build的一个小提琴来尝试一个类似的任务:

  • 简单: http : //jsbin.com/kiligi/2/edit?html,js输出
  • 抽象成一个混合: http : //jsbin.com/rufogo/1/edit? html,css,js, output