我正在使用localstorage适配器和emnber-data,当我销毁具有hasMany关系的记录时,我想要销毁所有这些。
以下是模型:
App.Category = DS.Model.extend({
title: DS.attr('string'),
items: DS.hasMany('item')
});
App.Item = DS.Model.extend({
name: DS.attr('string'),
category: DS.belongsTo('category')
});
我有一个名为'destroyCategory'的动作,其中我尝试了几件事,但无论我尝试什么,我都会觉得很奇怪。
我试过循环“孩子们”,我试图破坏“父母”,但没有一个按预期工作。我想我只是缺少一些基本的东西,所以感谢你的帮助。
编辑:
好的,我试过这个:
deleteItem: function(user_cat) {
this.store.find('category', user_cat.id).then(function(category) {
items = category.get('items');
items.forEach(function(item, index, enumerable) {
item.destroyRecord();
});
category.destroyRecord();
});
我得到的奇怪之处在于,除了一个“孩子”记录之外,它只会破坏... Wat?
最后更新:
这有效,但我想知道是否有更好的,更惯用的方法:
deleteItem: function(selection) {
this.store.find('category', selection.id).then(function(category) {
items = category.get('items');
items.toArray().forEach(function(item, index, enumerable) {
item.destroyRecord();
});
category.destroyRecord();
});
}
答案 0 :(得分:1)
您可以invoke( 'destroyRecord' )
关于项目:
deleteItem: function(selection) {
this.store.find('category', selection.id).then(category => {
let items = category.get( 'items' );
items.toArray().invoke( 'destroyRecord' );
category.destroyRecord();
});
}