У меня довольно простое приложение ember-cli (с использованием Ember 2.2 & Ember Data 2.2.1) с одной моделью под названием «сценарий». У меня есть имя маршрута «сценарии», в котором перечислены все сценарии. Все это прекрасно работает. В моем шаблоне приложения у меня есть панель навигации с кнопкой, которая запускает действие для удаления всех сценариев. Мой код контроллер приложения выглядит следующим образом для этого действия:не может получить store.findAll для работы
this.store.findAll('scenario').then(function(recs){
recs.forEach (function (rec) {
rec.destroyRecord();
});
}, console.log ('findAll Scenario failed'));
Когда я запускаю этот код, то console.log всегда печатает, что указывает на то, что обещание вернулся не выполнил. Но в сценарийной модели есть четкие записи. Я вижу их на экране в маршруте «сценарии», а также в инспекторе Ember. Почему этот «findAll» не выполняет?
Еще одна вещь, которую следует отметить: когда этот код запущен, Ember Inspector фактически показывает, что те же записи, которые я пытаюсь удалить, были добавлены. (например, если у меня есть 2 сценария с идентификаторами 23 & 24 соответственно, сначала я вижу две строки в Ember Inspector, как и ожидалось. После этого кода я вижу 4 строки, два с id 23 и два с id 24). Но колонка «МОДЕЛЬ ТИПЫ» в Ember инспектора по-прежнему говорит, что сценарий (2), что указывает только 2 записей. Каждый знает, что происходит?
Update (подробнее)
Если я делаю выгрузку следующим образом вместо этого «FindAll» фрагмент кода:
this.store.unload('scenario');
Я все еще вижу строки в Ember инспектора, но столбец «MODEL TYPE» фактически показывает «сценарий (0)», а записи больше не отображаются в «сценарии», что хорошо. Конечно, когда я делаю обновление, записи возвращаются, поскольку сервер никогда не был уведомлен чтобы удалить эти записи. По какой-то причине выполнение вышеуказанного выражения «выгрузить» после фрагмента кода «findAll» не имеет никакого эффекта.
Update (подробнее)
Также пробовал:
this.store.findAll('scenario').then(function(recs){
recs.forEach (function (rec) {
Ember.run.once (this, function() {
rec.destroyRecord();
});
});
}, console.log ('findAll Scenario failed'));
же ошибка.
Подробнее Обновление
надзора с моей стороны на вызов console.log. Я сделал так, как предложил Питер и изменил мой код на следующее:
this.store.findAll('scenario').then(function(recs){
recs.forEach (function (rec) {
Ember.run.once (this, function() {
rec.destroyRecord();
console.log ('found');
});
});
}, function() {
console.log ('findAll Scenario failed');
}
);
Этот код проверял findВсе найденные записи. Но исходная проблема сохраняется только с немного отличающимися симтомами. Я добавил две записи, а затем выполнил приведенный выше код. Вместо того, чтобы удалять эти две записи, Эмбер добавил две строки по-прежнему; «ТИП МОДЕЛИ» по-прежнему показал сценарий (2). Но если я снова запустил этот же код, «ТИП МОДЕЛИ» перешел к сценарию (0), и записи больше не показывались в маршруте сценариев. Но 4 ряда остались в инспекторе Эмбера.
Я думаю, что где-то есть ошибка в Ember Data. Но это сложно сделать, чтобы сообщить об этом.
Спасибо Питеру. См. Мое обновление выше. – ptmoy2