我在SPA中使用Breeze版本1.5.5和Knockout 3.4.0。我有一个我创建的函数来从实体数组中删除实体。我正在尝试使用rejectChanges()实现撤消,但observableArray没有恢复。当我调用manager.getEntities()时,我看到EntityState被设置为'未更改'。我把这个功能简化为一个愚蠢的例子:
var removeVehicle = function(data) {
data.entityAspect.setDeleted();
data.entityAspect.rejectChanges();
};
此功能不会取消删除实体。但是,当我修改函数只是进行文本更改时,它会撤消更改而不会出现问题。
var removeVehicle = function(data) {
data.model('test');
data.entityAspect.rejectChanges();
};
我希望能够撤消删除,但我不知道从哪里开始。我也尝试过预先添加一个实体,rejectChanges确实删除了它。
编辑:(2016-03-09)此实体的“父级”是在页面被激活时一次性加载的对象(Durandal)。我不确定它是否相关,但显然Breeze在复杂的物体上有些麻烦。
编辑:(2016-03-11)我分叉了breeze.js.samples项目并对其中的Todo-Knockout-Require项目进行了类似的更改(Breeze Fork for SO35852344。)我仍然遇到同样的问题。有问题的代码的确切位置是viewModel.js文件中的removeItem函数。