1

我们使用http://todomvc.com/architecture-examples/emberjs/作为起点。我们将 FixtureAdapter 更改为 RESTAdapter 并执行了以下更改:

Todos.TodosActiveRoute = Ember.Route.extend({
  model: function(){
    // ** OLD CODE **
    // return this.store.filter('todo', function (todo) {
    // return !todo.get('isCompleted');
    // });
    // ** NEW CODE **
    return this.store.findQuery('todo', {isCompleted: false})
  },
  renderTemplate: function(controller){
    this.render('todos/index', {controller: controller});
  }
});

我们可以正确加载待办事项,但如果我们想删除其中一项,则 DELETE 请求已成功发送到后端,但待办事项并未从 UI 中删除。

编辑: 删除操作是:

removeTodo: function () {
  var todo = this.get('model');
  todo.deleteRecord();
  todo.save();
}
4

1 回答 1

1

问题在于在此处使用 findQuery。它会导致一个非实时数组。这就是为什么删除后视图没有更新(我认为如果你添加一个待办事项,它不应该工作)

您可以使用store.filter将查询和过滤器功能传递给它。我认为它应该像你期望的那样工作。

Todos.TodosActiveRoute = Ember.Route.extend({
  model: function(){
    return this.store.filter('todo', {isCompleted: false}, function (todo) {
      return !todo.get('isCompleted');
    });
  },
  renderTemplate: function(controller){
    this.render('todos/index', {controller: controller});
  }
});
于 2013-09-25T09:30:04.570 回答