作为起点,我们使用了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});
}
});
我们可以正确加载todo项目,但是如果我们要删除其中一个项目,则DELETE请求会成功发送到后端,但todo-item不会从UI中删除。
修改 删除操作是:
removeTodo: function () {
var todo = this.get('model');
todo.deleteRecord();
todo.save();
}
答案 0 :(得分: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});
}
});