我正在使用Knockout和映射插件 我在初始化页面BEFORE服务器返回JSON数据时遇到问题。
在场景中一切正常:
1.获得JSON
2.执行VM = ko.mapping.fromJS(result);
3.执行ko.applyBinding(VM);
但是如果JSON需要一些时间来返回(例如10秒),我的页面需要在返回json之前进行初始化。但是,如果我使用空VM(ko.applyBinding(VM);
)let say VM = {};
而不是调用JSON,然后再重新绑定它 - 它将无效。
所以我的问题是 - 如何用淘汰赛重新塑造模特?我不想更改单个observable的值,而是重新绑定整个VM(视图模型),因为我的数据结构需要从JSON映射 - 而且在返回JSON之前它是未知的。
答案 0 :(得分:4)
我相信你所描述的问题是,事情不会立即呈现(并且实际上会给出错误),并且当来自服务器的数据到达时,该错误会阻止重绘。
如果是这种情况,我通常处理这种情况的方法是在加载数据时有一个知道的可观察对象,并将有问题的模板代码包装在if
中基于这种可观察性。
更新:您更有可能更换VM的值。这不再是绑定到界面元素的对象。
您可以使用ko.mapping.fromJS
来电的替代形式。
ko.mapping.fromJS(result, {}, VM);