我正在使用 Ember Data 的第 12 版。
我有一个简单的方法,ArrayController
它试图删除一条记录,并从模板中的操作中调用:
deleteFact: function(fact) {
self=this;
window.App.confirm(Em.I18n.t('Delete fact?'), {
yes: function() {
fact.deleteRecord();
fact.store.commit();
}
});
}
这始终适用于删除的第一条记录,并且列表显示记录消失。我正在使用 Rails,服务器处理DELETE
并返回一个 JSON 空对象和status 200
. 如果我在第一次删除后的任何时间删除另一条记录,我总是会立即抛出一个内部异常:
Uncaught Error: Attempted to handle event
删除记录on <App.Fact:ember402:31> while in state rootState.deleted.saved. Called with undefined
什么是删除记录的正确方法。我搜索了谷歌并找不到任何答案,而余烬数据的源代码和测试看起来就像这就是所有必须要做的事情。
模板:
{{#each fact in content}}
<tr>
<td>{{fact.title}}</td>
<td>{{fact.body}}</td>
<td>{{#linkTo 'facts.show' fact}}View{{/linkTo}} | <a {{ action 'deleteFact' fact}} class="button small deny delete-button">Delete</a>[{{fact.id}}]({{fact.stateManager.currentState.path}})</td>
</tr>
{{else}}
<tr>
<td colspan='4'>No facts registered at present.</td>
</tr>
{{/each}}
模板输出:
Title Facts Actions
asdfsd asdfsadf View | Delete[46](rootState.loaded.saved)
asdfsd asdfsadf View | Delete[47](rootState.loaded.saved)
asdfsd asdfsadf View | Delete[48](rootState.loaded.saved)
控制台中的输出:
单击带有 Fact Id 46 的记录删除记录到通过 id 46 的 yes 函数的控制台。记录从模板显示的列表中消失,留下 id 为 47 和 48 的两条记录。单击记录 47 的删除会在日志中显示记录 id 46 再次通过。