0

我正在创建一个包含 4 条路线的应用程序:

登录, 主页, page1, page2

当我在登录时检查用户是否已登录,然后它将用户转发到主页。通过获取路由器的 rootinstance 并调用 go 方法,这可以完美地工作。

当我检查用户是否没有在主页上登录时,它必须将用户发送到登录页面。我使用与上面相同的机制,但它没有做任何事情。页面被加载并且用户留在家里。当我添加 router.sync(); 作为下一个命令,我收到错误,因为同步未定义。有趣的是,发生错误后,路由器确实让我登录。

谁能告诉我发生了什么?

4

1 回答 1

0

我曾经遇到过类似的问题,我使用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);
          }
        );
于 2017-02-24T08:06:53.063 回答