0
嗨我希望能夠延遲我的應用程序的一點點這裏是我的意思。在致電服務器之前啓動屏幕disapears完成
這是我的殼觀點:
<div>
<!-- ko compose: { view : header }-->
<!--/ko-->
<!-- ko compose: { view : content }-->
<!--/ko-->
這是我的殼視圖模型:
define(['plugins/router', 'services/dataService' , 'models/appViewModels'],
function (router,dataService , appViewModels) {
var vm = {
header: ko.observable(),
content: ko.observable(),
activate: activate
};
function activate() {
setActivePage();
}
function setActivePage() {
$.when(dataService.account.isAuthenticated())
.done(function(isAuthenticated) {
setDefaultDisplayPage(isAuthenticated)
}).fail(function(data) {
alert(data);
});
}
function setDefaultDisplayPage(isAuthenticated) {
if (isAuthenticated) {
setHeaderAndContentObservables(appViewModels.header.generalHeader, appViewModels.content.homeContent);
} else {
setHeaderAndContentObservables(appViewModels.header.loginHeader, appViewModels.content.loginContent);
}
}
}
的振振有辭我使用的觀測,而不是一個路徑的字符串表示我查看是因爲在我的shell中,我決定是否應該將我的用戶發送到登錄頁面或主頁 。
這完美的作品,除了在時間,它需要從服務器獲取isAuthenticated財產閃屏自敗,直到數據被收到的用戶只能等待一個空白頁上的時間一兩件事。
現在我可以嘗試獲取main.js文件中的數據並緩存它,但是我認爲main.js應該只具有應用程序配置責任。
有沒有什麼辦法可以在shell實際得到綁定和啓動屏幕消失之前,對服務器調用數據?
您可以在激活的調用中從shell中返回一個承諾。它看起來像你幾乎在那裏,但你沒有回報它。 Durandal生命週期允許您返回該承諾,並且會在完成「加載」之前等待承諾解決。我相信你可以用它來使用jQuery的承諾,但是如果你使用Q.js,你可以使用類似return q.All(); –