我正在开发的应用程序有一个事件页面,用户可以在其中看到他们自己和朋友的事件,并且能够使用内联事件创建器(在同一页面/路线上创建事件)。更准确地说,事件全部加载并以新闻源样式显示,这工作得非常好,但现在的问题是尝试保存新的事件模型时。我认为一些代码会使这更容易理解。路线:
this.resource('newsfeed', function() {
this.route('personal');
this.route('whatever');
});
然后在NewsfeedIndexRoute
应用程序中有
model: function() {
return App.Event.find();
}
用于显示带有ArrayController
at /newsfeed 的所有事件。这很好用。
此外,该应用程序还有一个NewsfeedRoute
和Controller
,因此事件创建器可以在所有子路由上访问,并且为了保存事件,我们有以下代码:
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"}));
,它会覆盖使用newsfeed/index.hbs
该模型在模板中显示的所有内容(因此只显示“新标题”)。当您在显示的偶数创建器中输入更多内容时。这显然不是我们想要的行为。理想情况下,它应该以某种方式分离,然后保存到服务器。您可以在 Newsfeed 模型中看到的另一行是一种变通方法,它工作正常,但正如评论中提到的那样,它感觉真的像一个 hack,也使 API 有点脏,因为使用带有 POST 请求的 /events 端点会更加RESTful。
那么有没有人知道,如果现在有任何方法可以使用 ember-data 实现这一目标吗?