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"}}
一些新手的考虑。
-
尝试创build一个像这样的标签:
var hashtag = store.createRecord('hashtag', {card: card});
那么你不需要
card.get('hashtags').addObject(hashtag);
。 -
在保存父模型之前保存子模型。
这是我创build的一个小提琴来尝试一个类似的任务:
- 简单: http : //jsbin.com/kiligi/2/edit?html,js输出
- 抽象成一个混合: http : //jsbin.com/rufogo/1/edit? html,css,js, output