我有一个基本的Rest API,当我访问newPost页面时,有一个表单我可以用'title'和'text'字段以及提交按钮填写。创建记录后,我用控制器和transitionToRoute('posts')保存它。
当我查看“帖子”页面时,我输入的输入会显示两次。我检查了Ember检查器,看起来记录被放入数据存储器两次,一次点击创建按钮,一次在页面刷新后。当我再次刷新浏览器时,将删除副本。
如何摆脱商店中的重复记录?欢呼任何建议。
编辑:我相信我已经通过使用过滤器来删除尚未保留的帖子来解决我的问题。更新路线:
App.PostsRoute = Ember.Route.extend({
model: function() {
return this.store.find('post');
},
setupController: function() {
var posts = this.store.filter('post', function (post) {
return !post.get('isDirty');
});
this.controllerFor('posts').set('model', posts);
}
});
App.NewPostRoute = Ember.Route.extend({
model: function(){
return this.store.createRecord('post');
}
});
路线:
/* Routes */
App.Router.map(function() {
this.resource('posts');
this.resource('newPost');
});
App.PostsRoute = Ember.Route.extend({
model: function() {
return this.store.find('post');
},
setupController: function() {
var posts = this.store.filter('post', function (post) {
return !post.get('isDirty');
});
this.controllerFor('posts').set('model', posts);
}
});
App.NewPostRoute = Ember.Route.extend({
model: function(){
return this.store.createRecord('post');
}
});
NewPostController:
actions:
createPost: function() {
...
var post = this.get('store').createRecord('post', {
title: title,
text: text
});
this.set('title', '');
this.set('text', '');
post.save();
this.transitionToRoute('posts');
...
newRecord: function() {
this.set('content', App.Post);
}
谢谢!