我正在使用HotTowel / Durandal作为SPA。在我的主页上,我在main.js中进行了正常的入口转换:
app.setRoot('viewmodels/shell', 'entrance');
这最终路由到我的home.js类。我现在所做的是在激活功能中,我已经进行了ajax调用来获取数据
function viewAttached() {
return add(app.baseUrl + '/api/Customer/1/Animals');
}
我的视图有一个只在数组不为空时显示的div:
<div class="animal-results" data-bind="visible: visible()">
我遇到的问题是入口转换带有进度条显示,然后它就消失了。当它消失时,数据尚未从服务器返回,因此页面看起来空白一两秒,然后在更新视图模型时弹出。
如果从服务器返回数据或错误,我如何确保转换停留在屏幕上?
答案 0 :(得分:2)
- 合成引擎查找激活回调。如果在compose绑定中指定了任何activationData,那么它将作为参数传递。如果激活回调返回一个promise,则合成引擎将在进行处理之前等待其解析。
示例代码
return {
activate: function () {
var self = this;
return $.getJSON('http://whatever/').then(function (receivedData) {
self.data= receivedData;
});
}
}