我希望能够单击列表中项目的删除按钮,发送HTTP DELETE,然后仅在API返回成功代码时才实际删除记录。
这是我目前的代码:
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);
}
}
});
这基本上有效...除了foo在save
点从DOM中删除,如果调用rollback
,它会再次添加,但是在数组的末尾Foo
个对象。
我可以在rollback
之后对该数组进行排序,但这似乎不是正确的方法。对于这种常见情况,是否有更好的ember.js模式?
答案 0 :(得分:2)
我会使用ArrayController;有了它,每个项目都有自己的ItemController
,你可以在其中拥有一个标记isVisible
。
因此,当您删除/撤消时,您可以切换该属性。
为了避免保存DOM中但隐藏的项目,我看到两个选项:
isVisible = false
。isVisible = false
。来自DOM和API的删除/保存可以是ItemController的一部分,类似于添加"自我破坏"每个项目。
根据您在UI中所需的交互,可以重新排列这些说明。构建块将保持不变:ArrayController / ItemController。
答案 1 :(得分:-1)
除非你从服务器获得成功,否则逻辑将不会删除任何东西,那么它将正常工作