Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 余烬:当使用RestaAdapter时,视图未在请求后更新_Ember.js_Ember Data - Fatal编程技术网

Ember.js 余烬:当使用RestaAdapter时,视图未在请求后更新

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'); // });

作为我们使用的起点。 我们将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项目,但如果我们想删除其中一个,则会将删除请求成功发送到后端,但不会从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:没有任何
属于
的内容,您能提供更多的代码来将其放到上下文中吗?