我曾经遇到过类似的问题,我使用Router.sync
返回的承诺(router.sync 文档)解决了这个问题。在你的路由器之后调用Router.sync
你的主视图模型.configure
,然后ko.applyBindings
在 promise 的then
函数中调用你的、路由等,如下所示:
oj.Router.rootInstance.configure(...);
oj.Router.sync().then(
function () {
// bind your ViewModel for the content of the whole page body.
ko.applyBindings(
new RootViewModel(),
document.getElementById('globalBody')
);
// navigate the user to login or wherever you want them to be now
oj.Router.rootInstance.go('login');
},
function (error) {
oj.Logger.error('Error in root start: ' + error.message);
}
);