假设我有一个任务申请。
当用户更新任务时,启用更新按钮并显示更新记录的数量。删除记录时,我无法实现此目的。
对于更新,可以在控制器中轻松完成:
App.TasksController = Ember.ArrayController.extend({
changedAmount: function(){
@filterBy('isDirty', true).get('length');
}.property('content.@each.isDirty');
})
但是当我使用deleteRecord
函数删除记录时,我无法获得更改/删除记录的数量。例如:
App.TasksRoute = Ember.Route.extend({
.
.
actions: {
delete: function(task){
task.deleteRecord()
}
}
});
如何访问已删除的记录或至少其中的数量?
我的环境:
Ember : 1.3.1.1
Ember Data : 1.0.0-beta.6
Handlebars : 1.2.1
jQuery : 1.10.2
答案 0 :(得分:1)
看起来您正在寻找的属性是isDeleted
。所以你可以修改那个控制器:
App.TasksController = Ember.ArrayController.extend({
dirtyTasks: Ember.computed.filterBy('content', 'isDirty', true),
deletedTasks: Ember.computed.filterBy('content', 'isDeleted', true),
changedTasks: Ember.computed.union('dirtyTasks', 'deletedTasks')
});
<强>更新强>:
我看到你对自动更新内容的意思。我将这个跟踪到了Ember Store使用的recordArrayManager。当您在商店中发出find
或filter
时,返回的是过滤后的记录数组,应用于该数组的其中一个过滤器是其中的所有记录都不在一个isDeleted
州。您可以在行动中看到here。
在我的头顶,我无法看到解决方案,我特别满意。但是,如果您绝对需要数组控制器中的内容包含deletedRecords,那么您需要在自定义RecordArrayManager类中覆盖我上面链接的方法,然后在应用程序的存储的初始化中设置该recordArrayManager,如{{ 3}}
请注意,这是一个肮脏的黑客,你真的不应该这样做。坦率地说,我认为更好的解决方案是,而不是使用ember数据方法删除记录,提出你自己标记的customIsDeleted
状态并将模型设置为该状态而不是直接删除它,如果你真的希望它留在屏幕上。