使用ember-data 1.0.0-beta.5并具有以下路由和路由器
App.Router.map(function () {
this.resource('users', function () {
this.route('new');
});
this.resource('user', { path: '/user/:id' }, function () {
this.route('edit');
});
});
App.UsersIndexRoute = Ember.Route.extend({
model: function(){
return this.store.findAll('user');
},
setupController: function (controller, data) {
this._super(controller, data);
}
});
App.UserEditRoute = Ember.Route.extend({
model: function() {
return this.store.find('user', this.modelFor("user").id);
},
setupController: function (controller, data) {
this._super(controller, data);
},
actions: {
delete: function(){
var router = this;
var model = this.currentModel;
model.destroyRecord().then(function(){
router.transitionTo('users');
});
}
}
});
然而,当我转换回用户路由时,ArrayController仍然有删除的对象。关于为什么会这样或者如何等到它在转换之前被删除的任何想法?
答案 0 :(得分:0)
有点解决问题但是解决了这个问题。
在UsersIndexContoller中添加一个数组来存储已删除的IDApp.UsersIndexController = Ember.ArrayController.extend({
deleted: []
});
然后只需将已删除模型的id附加到此数组,并在setupController方法中进行过滤。
App.UsersEditRoute = Ember.Route.extend({
delete: function(){
var router = this;
var model = this.currentModel;
var usersController = this.controllerFor('users.index');
model.destroyRecord().then(function(){
usersController.get('deleted').push(model.id);
router.transitionTo('users');
});
}
}
});
App.UsersIndexRoute = Ember.Route.extend({
setupController: function (controller, data) {
var deleted = this.controller.get('deleted');
var filtered = data.filter(function(user){
return !deleted.contains(user.id);
});
data.set('content', filtered);
this._super(controller, data);
}
});
答案 1 :(得分:-1)
在您的情况下,因为您想要重新获取所有用户,而您的服务器对您来说是关于删除记录(或稍后发生),您可能会考虑转换然后删除。
delete: function(){
var model = this.currentModel;
this.transitionTo('users').then(function(){
model.destroyRecord();
});
}