5

我正在构建一个简单的 CRUD 应用程序。我有一个从服务器获取的记录列表,单击第一个,然后我在show该记录的页面上,并带有一个delete与控制器上的此操作相关联的按钮:

destroy: function() {
  this.content.deleteRecord()
  this.store.commit()
  this.transitionTo('usersIndex')
}

我知道记录被删除了,我可以在服务器上看到它被删除。AJAX 请求成功。但是,该记录仍然显示在索引页面上。如果我从服务器进行硬刷新,它现在就消失了。

我的路由器usersIndex如下:

App.UsersIndexRoute = Ember.Route.extend({
  model: function(params) {
    return App.Users.find();
  },
  setupController: function(controller, model) {
    controller.set('content', model);
  }
});
4

2 回答 2

1

调用 deleteRecord 后,您必须将其保存为 ember 数据。

destroy: function() {
  this.content.deleteRecord()
  this.content.get('isDeleted');
  this.content.save()
  this.store.commit()
  this.transitionTo('usersIndex')
}

或者,您也可以起诉 destroyRecord 从后端和 ember 数据中删除了 thh 记录

destroy: function() {
      this.content.destroyRecord()
      this.transitionTo('usersIndex')
    }

希望这可以帮助 !

于 2016-05-20T09:32:50.690 回答
0

我在我的项目中应用的解决方案是增强 usersIndex 以过滤掉任何 isDeleted 记录,例如

在模板中类似于:

{{#unless user.isDeleted}}
  {{render 'user' user}}
{{/unless}}

也可以利用 afterModel 钩子来测试 isDeleted 例如:

afterModel: function(model){
    if ((!model.get('users').isAny('isDeleted',false)) || model.get('users.length') === 0){
        this.send('exitUserIndex');
    }
}
于 2014-02-27T05:37:07.117 回答