我继承了一些使用淘汰映射插件的代码,并且正在尝试修复错误,其中之一是在会话期间重新访问网页时必须更新而不是替换视图模型。我研究了http://knockoutjs.com/documentation/plugins-mapping.html并想象我了解相关部分,至少如何创建和使用忽略数组,例如:
var mapping = {
'ignore': ["propertyToIgnore", "alsoIgnoreThis"]
}
var viewModel = ko.mapping.fromJS(data, mapping);
在我的例子中,要更新 viewModels,我实际上需要使用这个参数列表:
ko.mapping.fromJS(data, mapping, viewModel);
我的问题是,代码在最初加载后对 viewModel 进行了一些后处理,在数组元素上创建了计算的 observables - 例如,其中之一被命名为“showRemove”。虽然我创建了一个包含“showRemove”的忽略数组,如下所示:
ko.mapping.fromJS(data, { "ignore": ["showRemove"] }, viewModel);
... fromJS 调用引发异常,并显示消息“showRemove”未定义。
有没有办法让插件忽略添加到视图模型中的不在对象层次结构顶层的属性?我认为必须有,但我不能轻易找到如何做到这一点的解释。
即使我必须手动编写详细的更新代码,我也打算让它工作,但我真的不想这样做。
我认为这个问题及其背景很清楚,但如果不是,请告诉我,我将提供更多细节,包括可能的(非)工作代码示例。