4

我正在使用带有映射插件的 Knockout。
在服务器返回 JSON 数据之前初始化页面有问题。

在场景中一切正常:
1. 获取 JSON
2. 执行VM = ko.mapping.fromJS(result);
3. 执行ko.applyBinding(VM);

但是,如果 JSON 需要一些时间才能返回(例如 10 秒),我的页面需要在返回 json 之前进行初始化。但是,如果我ko.applyBinding(VM);使用空 VM ( let say VM = {};) 而不是调用 JSON,然后再次重新绑定它 - 它就行不通了。

所以我的问题是 - 如何用淘汰赛重新绑定模型?我不想更改单个 observable 的值,而是重新绑定整个 VM(视图模型),因为我的数据结构需要从 JSON 映射 - 在 JSON 返回之前它是未知的。

4

1 回答 1

4

我相信您所描述的问题是事情不会立即在您的模板中呈现(并且实际上会给出错误),并且当来自服务器的数据到达时,该错误会阻止重绘。

如果是这种情况,我通常处理这个问题的方式是有一个知道数据何时加载的 observable,并if基于这个 observable 将有问题的模板代码包装在一个中。

更新:您更有可能替换 VM 的值。这不再是绑定到界面元素的对象。

您可以只使用ko.mapping.fromJS呼叫的替代形式。

ko.mapping.fromJS(result, {}, VM);
于 2012-06-11T11:03:27.387 回答