在我App.NodesIndexController
我做這樣的事情:聽存儲事件
destroyAllRecords: function() {
var _this=this;
Bootstrap.ModalPane.popup({
heading: 'Warning',
message: 'Are you sure you want to delete all nodes?',
primary: 'Ok',
secondary: 'Cancel',
showBackdrop: true,
callback: function(opts, event) {
if (opts.primary) {
_this.forEach(function(node) {
console.log('Deleting node %o', node);
node.deleteRecord();
});
var store = _this.get('store').commit();
store.commit();
store.on('didDelete', toggleMessageTray.bind(this, 'All nodes have been successfully deleted'));
}
}
});
}
但我居然不知道如何傾聽「商店已經更新」事件。我不想聆聽單個的事件,而是在執行提交後觸發的全局商店事件。
三個問題:
- 有沒有這樣的情況?
- 商店事件定義在哪裏?我沒有看到關於它的文檔(this是我所知道的關於該商店的唯一文檔)
- 是否有更好的方法來刪除所有記錄,而不是在循環中刪除它們中的每一個?
我喜歡你的答案,但我真的不知道你可以用'DELETE'批量提交。大多數情況下,我看到有人在做'POST'傳遞所有ID作爲請求數據。另一種常見的方法是將「節點」作爲資源,因此您可以刪除此節點並在服務器中刪除子記錄,但仍需要爲兒童同步商店 – MilkyWayJoe
@MilkyWayJoe,謝謝!嗯,現在你讓我懷疑......我會更深入地觀察,並更正我的回答:) – intuitivepixel
我可能完全錯誤的THO :)如果在API中有一個'didDeleteRecords',它應該可能在批量刪除時觸發是完整的...所以我可能錯了 – MilkyWayJoe