knockout.js映射插件可以忽略添加到viewModel属性的计算可观察属性吗?

时间:2013-11-14 02:32:43

标签: javascript plugins knockout.js mapping ignore

我继承了一些使用knockout映射插件的代码,我正在尝试修复bug,其中之一就是在会话期间重新访问网页时,必须更新viewModels而不是替换。我研究过http://knockoutjs.com/documentation/plugins-mapping.html并想象我理解相关部分,至少如何创建和使用ignore数组,例如:

var mapping = {
    'ignore': ["propertyToIgnore", "alsoIgnoreThis"]
}
var viewModel = ko.mapping.fromJS(data, mapping);

在我的例子中,要更新viewModels,我实际上需要使用这个参数列表:

ko.mapping.fromJS(data, mapping, viewModel);

我的问题是代码在最初加载后对viewModel进行了一些后处​​理,在数组元素上创建了计算的observable - 例如,其中一个名为“showRemove”。虽然我创建了一个包含“showRemove”的ignore数组,如:

ko.mapping.fromJS(data, { "ignore": ["showRemove"] }, viewModel);

... fromJS调用抛出异常,消息'“showRemove”未定义。'

有没有办法让插件忽略添加到viewModel的属性,这些属性不在对象的层次结构的顶层?我认为必须有,但我不能轻易找到如何做的解释。

即使我必须手动编写详细的更新代码,我打算让它工作,但我真的不想这样做。

我认为问题及其背景很清楚,但如果没有,请告诉我,我会提供更多细节,包括可能的(非)工作代码示例。

0 个答案:

没有答案