Ember.js 余烬:当使用RestaAdapter时,视图未在请求后更新
作为我们使用的起点。 我们将FixtureAdapter更改为RESTAdapter,并执行了以下更改:Ember.js 余烬:当使用RestaAdapter时,视图未在请求后更新,ember.js,ember-data,Ember.js,Ember Data,作为我们使用的起点。 我们将FixtureAdapter更改为RESTAdapter,并执行了以下更改: Todos.TodosActiveRoute = Ember.Route.extend({ model: function(){ // ** OLD CODE ** // return this.store.filter('todo', function (todo) { // return !todo.get('isCompleted'); // });
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项目,但如果我们想删除其中一个,则会将删除请求成功发送到后端,但不会从UI中删除todo项目
编辑:
删除操作是:
removeTodo: function () {
var todo = this.get('model');
todo.deleteRecord();
todo.save();
}
问题在于在这里使用findQuery。它会导致一个非活动数组。这就是为什么删除后视图不会更新的原因(我认为如果添加todo,它应该不会工作) 您可以使用
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});
}
});
问题在于在这里使用findQuery。它会导致一个非活动数组。这就是为什么删除后视图不会更新的原因(我认为如果添加todo,它应该不会工作) 您可以使用
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});
}
});
你能显示删除发生的动作吗?我已经更新了问题并添加了删除动作。TODO
belongTo
有什么吗?@chopper:没有任何belongTo
你能提供更多的代码来将其放到上下文中吗?你能显示删除发生的动作吗?我已经更新了问题并添加了删除行动。TODO是否属于
任何内容?@chopper:没有任何属于
的内容,您能提供更多的代码来将其放到上下文中吗?