【发布时间】:2012-10-25 16:50:45
【问题描述】:
我想创建一个用于插入新车的页面。我正在使用 knockout.js 并想使用敲除映射。问题是,对于创建,为了获得映射结构,我需要进行 ajax 调用并返回新的和空的序列化对象。有什么可以阻止这个 ajax 调用吗?
(我也不想一个人写下整个模型结构)
【问题讨论】:
我想创建一个用于插入新车的页面。我正在使用 knockout.js 并想使用敲除映射。问题是,对于创建,为了获得映射结构,我需要进行 ajax 调用并返回新的和空的序列化对象。有什么可以阻止这个 ajax 调用吗?
(我也不想一个人写下整个模型结构)
【问题讨论】:
如果您不想创建对象的 JavaScript 版本并且不想通过 ajax 调用来获取它,那么 Knockout 不可能神奇地知道对象的结构。
您可以做的是使用Fiddler 来拦截AJAX 调用。然后 Fiddler 将向您展示对象的 JSON 表示。您可以将其复制粘贴到您的 JavaScript 中,以便您拥有模型的“缓存”版本以供首次使用。将此传递给 Knockout,Knockout 将为您创建对象。
当然,缓存版本会与您的服务器模型不同步(同样的情况也可能发生在纯 JavaScript 模型中)。这只是您必须手动处理的事情。
解决此问题的一种方法是使用 T4 模板在编译时生成一些代码。通过反射,您可以使用模型的最新版本生成 .js 文件。
【讨论】: