誰かが説明できるかどうかを確認したいいくつかの動作を特定しました。
ここで jsfiddle を作成しましたhttp://jsfiddle.net/iceking1624/PpWec/17/。動作をテストするには、Web コンソールを開き、[質問を追加] ボタンの横にあるテキスト フィールドに何かを入力して、ボタン ([質問を追加]) をクリックします。
DS.Model
スキーマは次のとおりです。
App.Session = DS.Model.extend({
"questions" : DS.hasMany('App.Question') ,
"firstQuestion" : DS.belongsTo('App.Question')
});
App.Question = DS.Model.extend({
"session" : DS.belongsTo('App.Session'),
"choices" : DS.hasMany('App.Choice'),
"text" : DS.attr('string')
});
App.Choice = DS.Model.extend({
"session" : DS.belongsTo('App.Session'),
"question" : DS.belongsTo('App.Question'),
"text" : DS.attr('string')
});
内部で次のことを行うと、関数SessionController
が呼び出されます。addQuestion
App.SessionController = Ember.ObjectController.extend({
addQuestion: function() {
var sessionModel = this.get('model');
var question = App.Question.createRecord({
"session" : sessionModel
});
this.get('questions').pushObject(question)
}
});
次の「エラー」が表示されますが、それでも期待どおりに機能します。
エラー: アサーションが失敗しました: App.Question で 'session' 関係を定義しましたが、App.Session でタイプ App.Question の可能性のある逆関係が複数見つかりました。
App.Session
これは、内部に を参照する 2 つのフィールドがあるためであることがわかりましたApp.Question
。
"questions" : DS.hasMany('App.Question') ,
"firstQuestion" : DS.belongsTo('App.Question')
しかし、なぜEmberは私が複数のApp.Question
関係を持っていることを気にかけているのだろうか?? 特に、エラーがスローされるのに、完全に機能する理由。これはおそらくバグですか?
エラーをスローせずに Ember を満足させる方法はありますか? firstQuestion
App.Session モデルでそのフィールドが本当に必要です。
コンソールを開いて、私のjsfiddleを見てください。それは私の問題の完璧な例です。firstQuestion
次に、でコメントアウトしてみてApp.Session = DS.Model
、エラーが魔法のように消えるのを見てください