私が取り組んでいるアプリには、ユーザーが自分自身や友人からのイベントを見るだけでなく、インラインイベントクリエーターを使用できるイベントページがあります (同じページ/ルートでイベントを作成するため)。もう少し正確に言うと、イベントはすべて読み込まれ、ニュースフィード スタイルで表示されます。これは問題なく動作しますが、新しいイベント モデルを保存しようとするときに問題が発生します。いくつかのコードがこれを理解しやすくすると思います。ルート:
this.resource('newsfeed', function() {
this.route('personal');
this.route('whatever');
});
その後NewsfeedIndexRoute
、アプリには
model: function() {
return App.Event.find();
}
ArrayController
/ニュースフィードですべてのイベントを表示します。それはうまくいきます。
さらに、アプリにはNewsfeedRoute
andController
もあるため、すべてのサブルートでイベント作成者にアクセスでき、イベントを保存するために次のコードがあります。
App.NewsfeedRoute = Ember.Route.extend({
setupController: function(controller){
controller.newRecord();
}
});
App.NewsfeedController = Em.ObjectController.extend({
newRecord: function() {
//The following line works but makes the API 'dirty' and an extra model needs to be created
this.set('content', App.Newsfeed.createRecord({title: "new title"}));
//The next line would be preferred, but overrides the displayed models at /newsfeed
//this.set('content', App.Event.createRecord({title: "new title"}));
},
save: function() {
this.get('model').save();
}
});
したがって、問題は、/newsfeed に移動して行を使用するとthis.set('content', App.Event.createRecord({title: "new title"}));
、テンプレートに表示されるすべてのものをその 1 つのモデルで上書きすることnewsfeed/index.hbs
です (つまり、「新しいタイトル」を表示するだけです)。また、表示される偶数クリエーターにさらに入力すると、同様に表示されます。これは明らかに私たちが望んでいる動作ではありません。理想的には、何らかの方法で分離してから、サーバーに保存する必要があります。ニュースフィード モデルで見られる他の行は回避策であり、正常に動作しますが、コメントで述べたように、POST 要求で /events エンドポイントを使用するため、ハックのように感じられ、API が少し汚れます。はるかにRESTfulになります。
では、ember-data を使用して今すぐそれを達成する方法があれば、誰にもアイデアはありませんか?