2017-02-11 3 views
0

У меня есть действие, которое передает объект модели на маршрут, чтобы удалить его. Но когда я вызываю delete на этом объекте, я получаю model.destroyRecord не является функцией.Ember - destroyRecord не является функцией объекта модели

model() { 
    return this.store.findRecord('user', 980190980).then((user) => { 
     return user.getPlaylists(); 
    }.bind(this)); 
    }, 

    <i class="fa-icon fa fa-trash" aria-hidden="true" {{action "deletePlaylist" playlist}} style="margin-top:10px"></i> 

    deletePlaylist(playlist) { 
    this.get('playlists').removeObject(playlist); 
    playlist.destroyRecord(); 
    } 

Если я:

this.store.findRecord('playlist', playlist.id).then(playlist => playlist.destroyRecord());

Я получаю следующее сообщение об ошибке:

Attempted to handle event 'pushedData' while in state root.deleted.inFlight

+0

одна вещь наверняка, этот код не действителен. вы не можете '.bind()' использовать функцию стрелки. Возможно, что-то не так с вашим кодом, но idk, потому что вы его не разместили. Создайте минимальный пример и опубликуйте его. – Lux

ответ

0

Я бы поставил debugger; заявление до вашего звонка destroyRecord() и проверить, что тип объекта - модель Ember Data. Я подозреваю, что .getPlaylists() не тип DS.Model и его простой объект javascript (POJO).

Ваша ошибка root.deleted.inFlight указывает на то, что вы сохранили запись, и ее нельзя удалить, если она не может быть сначала сохранена. Ember пытается сообщить вам свою грязную модель, то есть она имеет изменения и не была сохранена. http://emberjs.com/api/data/classes/DS.RootState.html

deleteRecord() удалит его из магазина без вызова сервера и destroyRecord() будет делать то же самое, как deleteRecord() и вызовите сервер, чтобы уведомить этот отчет должен быть удален из любого постоянного хранения.

Также есть некоторые проблемы с вашим кодом. Недопустимый номер .bind(). findRecord обещание оленья кожа иметь надлежащую обработку ошибок: http://emberjs.com/api/classes/RSVP.Promise.html

promise.then(function(value) { 
    // on fulfillment 
}, function(reason) { 
    // on rejection 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^