2013-09-20 5 views
1

В качестве отправной точки мы использовали http://todomvc.com/architecture-examples/emberjs/. Мы изменили FixtureAdapter к RESTAdapter и выполняются следующие изменения:Ember: View не обновляется после запроса, при использовании 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 -это не удаляется из пользовательского интерфейса.

EDIT: Функция удаления действия:

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

Можете ли вы показать действие, в котором происходит удаление? –

+0

Я обновил вопрос и добавил действие удаления. – Huehnermelker

+0

Сделайте что-нибудь «toTOS»? – chopper

ответ

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}); 
    } 
}); 
Смежные вопросы