我有一个来自服务器的深层对象图,我用一个 Knockout 视图模型结构表示,它在每个级别省略了各种不必要的属性,但保留了基本层次结构。
我在两个方向都使用 Knockout 映射插件。在根以下的每个视图模型级别,当前视图模型的“构造器”接受其父视图模型作为参考,以及构建自身所需的原始数据部分。然后它会创建一组新的映射选项来创建自己的孩子。
我创建了一个非常简化的小提琴来说明这一点:
我在检索时需要从服务器获取大量的只读元数据,但是当我将图形作为 JSON 发布回时应该省略这些元数据。我一直在每个级别使用 toJSON 原型方法来剔除我不需要的东西,这在某个时候工作得很好,但现在已经停止工作。
在本地,似乎我的 toJSON 覆盖甚至没有触发(基于警报和控制台日志),但在这个小提琴中,它们确实触发了,但最终对象仍然包含已删除的属性“child”。我可以看到它已被 toJSON 方法删除,但在根取消映射后它仍然存在并显示在警报中。
所以,有两个问题 - 什么会导致我的 toJSON 覆盖不会在本地触发,我对简化小提琴中的取消映射逻辑的误解在哪里?
提前谢谢了。