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

todo アイテムを正しくロードできますが、そのうちの 1 つを削除したい場合は、DELETE リクエストがバックエンドに正常に送信されますが、todo アイテムは UI から削除されません。

編集: 削除アクションは次のとおりです。

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

1 に答える 1

1

問題は、ここで 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});
  }
});
于 2013-09-25T09:30:04.570 に答える