- 烬:1.5.0-beta.2
- 灰烬数据:1.0.0-beta.7
我有以下路由器:如何避免太多的空记录?
App.Router.map(function() {
this.resource('posts', function() {
this.route('new');
});
});
我PostsNewRoute
创建一个新的记录在model
钩:
App.PostsNewRoute = Ember.Route.extend({
model: function() {
return this.store.createRecord('post');
}
});
,因为我不想瞬态记录可见,我筛选出来的我PostsRoute
:
App.PostsRoute = Ember.Route.extend({
model: function() {
this.store.find('post');
return this.store.filter('post', function(post) {
return !post.get('isNew');
});
}
});
可正常工作,但每次posts.new
过渡添加新记录到店,这是我想避免。因此,而不是要求每模型钩子被调用时createRecord
,我过滤商店的空记录并返回这一点,如果有一个发现:
App.PostsNewRoute = Ember.Route.extend({
model: function() {
var route = this;
return this.store.filter('post', function(post) {
return post.get('isNew');
}).then(function(result) {
return result.get('firstObject') || route.store.createRecord('post');
);
});
这给了我最多一个空记录。
我的问题:有没有更好的方法来避免我的商店被填充(许多)空记录?
UPDATE:
而不是在isNew
属性过滤的,我也许可以用currentModel
:
model: function() {
this.get('currentModel') || this.store.createRecord('post');
};
我可能在这里错过了一些东西,但为什么不是不创建新记录?从没有放置在商店中的对象生成表单? – jasonpgignac
我看到使用'createRecord'的两个原因:1)当我想验证表单数据时,我想调用一个定义在模型上的'validate'方法,以及2)如果我有我的'submit'动作来创建一个对象添加到商店,如果我的'save()'被拒绝,我仍然会得到'空'记录。 – bazzel
如果您只是在没有保存的情况下留下页面并将其销毁,那该怎么办? – jasonpgignac