Javascript 在ember.js中从数组中删除记录的正确方法
我希望能够为列表中的项目单击一个删除按钮,发送一个HTTP delete,然后只有在API返回一个成功代码时才实际删除记录 这是我目前的代码:Javascript 在ember.js中从数组中删除记录的正确方法,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我希望能够为列表中的项目单击一个删除按钮,发送一个HTTP delete,然后只有在API返回一个成功代码时才实际删除记录 这是我目前的代码: App.FooController = Ember.ObjectController.extend({ actions: { removeFoo: function() { var foo = this.get('model'); var onFail = function(res
App.FooController = Ember.ObjectController.extend({
actions: {
removeFoo: function() {
var foo = this.get('model');
var onFail = function(response) {
alert(response.responseText);
foo.rollback();
};
foo.deleteRecord();
foo.save().then(function() {}, onFail);
}
}
});
这基本上是有效的。。。除了在save
点将foo从DOM中删除外,如果调用了rollback
,它将再次添加,但添加到foo
对象数组的末尾
我可以在
回滚后对该数组进行排序,但这似乎不是正确的方法。对于这种常见的情况,是否有更好的ember.js模式?逻辑是,除非您从服务器获得成功,否则不要删除任何内容,然后它将正常工作我将使用;有了它,每个项目都有自己的ItemController
,您可以在其中看到一个标志isVisible
因此,当删除/撤消时,可以切换该属性
为了避免保存DOM中隐藏的项目,我看到了两个选项:
将它们保留在那里,保存整个数组时,跳过带有isVisible=false的那些
添加一个计时器,在X秒后从DOM中删除isVisible=false
中的项目
来自DOM和API的删除/保存可能是ItemController的一部分,有点像给每个项添加“自毁”
根据您希望在UI中进行的交互,可以重新排列这些指令。构建块将保持不变:ArrayController/ItemController。OK,但不是deleteRecord
和save
一起导致ember发送HTTP DELETE吗?在尝试删除之前,我不知道如何获得成功。然后从您的阵列模型中删除它,并在删除操作后始终从服务器刷新该阵列,这将在您的uiI中提供更新的数据。我开始怀疑您没有使用Ember这么多。