尝试创建一个有很多属于 RESTAdapter 的东西。本质上,我有一张卡片(推特用户)有很多标签。我正在使用 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();
}
}
});
在我的 route ,当用户输入推特名称时,我正在制作一张虚拟卡片和标签。我将主题标签添加到卡片主题标签中。到目前为止,在 Ember 方面一切都很好。如果我不调用 card.save(),卡片和主题标签会按预期关联。当我调用 .save() 时,发布的请求是:
card: {handle: "@testing123", bio: "testbio", avatar: "twitter.com/129012931/img_original.jpg"}
没有提及主题标签。
我在后端使用 sails,它似乎可以保存请求中提供的任何内容。
如果我尝试这样的事情: hashtag.save().then(function () { 卡.保存() });
我之所以尝试,是因为我认为在 Ember 将其与卡片相关联之前,我可能需要来自服务器的 ID 用于标签。 hashtag请求如下:
{"hashtag":{"title":"EmberJS","print":false,"card":null}}
和卡片请求:
{"card":{"handle":"@wiolsid","bio":"testbio","avatar":"twitter.com/129012931/img_original.jpg"}}
最佳答案
一些新手注意事项。
尝试像这样创建一个主题标签:
var hashtag = store.createRecord('hashtag', {card: card});
那么你就不需要
card.get('hashtags').addObject(hashtag);
。在保存父模型之前先保存子模型。
这是我为尝试类似任务而创建的 fiddle :
关于javascript - HasMany - BelongsTo 与 RESTAdapter Ember.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28529338/