私はこのような2つのモデルを持っています:
App.Build = DS.Model.extend({
allegiance: DS.attr('string'),
profession: DS.attr('string'),
skills: DS.hasMany('skill')
});
App.Skill = DS.Model.extend({
name:DS.attr('string'),
value:DS.attr('number')
});
私のアプリでは、忠誠心、職業、各スキルの値を設定するためのコントロールがあります (最大 55 まであります)。
次に、アプリケーション コントローラーのアクション ハッシュに、ビルド モデルをサーバーに保存するアクションがあります。
save:function(){
var store = this.get('store');
var skills = this.get('controllers.skills').get('model');
console.log(skills);
var build = store.createRecord('build',{
profession:1,
allegiance:1,
skills:skills
});
build.set('skills',skills);
build.save();
console.log('Saved!');
}
ただし、ビルド モデルがサーバーに送信されると、スキル プロパティは空の配列になります。
{"build":{"allegiance":"1","profession":"1","skills":[]}}
私は何か間違ったことをしていると確信していますが、何を理解できず、それに関する適切なドキュメントを見つけることができません。追加の注意として、私が提出するのはスキル ID と値だけです。
どんな助けでも大歓迎です!
アップデート:
Daniel の提案に従って、save 関数を編集して、pushObjects を使用してスキルを Build モデルに入れ、それを保存しました。今はうまくいっています。生成された投稿データは次のようになります。
{"build":{
"allegiance":1,
"profession":1,
"skills":["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55"]}}
それはスキルIDのリストです。他の属性は投稿で送信されません。スキルを反復処理し、新しいオブジェクトを作成し、必要な唯一の部分である ID と値をプッシュしようとしましたが、エラーが発生します。のようなものは、undefined を使用できません、タイプ スキルでなければなりません。
これは、Ember データがネイティブに処理する必要があるようです。リクエストで他のスキル属性を送信するために不足しているものはありますか?
ありがとう!!