1

嗨,我正在使用带有导航列表的示例应用程序,但我想在它上面创建一个登录页面,一旦我单击登录按钮并且在身份验证后,我必须将应用程序路由到主页。我尝试了下面的代码,但什么也没发生。oj.Router.rootInstance.go('登录');

请帮忙。

应用:Oracle JET 分发

代码:

function (oj, ko, app) { // 当所有需要的模块都加载完毕后,这个回调就会被执行

$(function() {

  function init() {
    oj.Router.sync().then(
      function () {
        // Bind your ViewModel for the content of the whole page body.
        ko.applyBindings(app, 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);
      }
    );
  }
4

2 回答 2

1

您需要将您的路由器go()命令移出 main.js 并进入支持登录页面的视图模型,并且仅当用户通过输入正确的用户名/密码通过您的身份验证测试时才运行。

如果登录是您希望他们看到的默认页面,请更改 router.configure 和 navData 设置appController.js以使其成为默认页面:

self.router.configure({
     'login': {label: 'Login', isDefault: true},
      ...

查看FixItFast 示例代码,了解登录页面示例和支持它的结构。FixItFast 是一个比标准 Starter 模板更复杂的示例,因为它假定移动优先,但 signin.html 视图和 signin.js 视图模型可能会给您带来好主意。

于 2017-04-12T21:28:26.297 回答
1

首先,您将登录页面设置为默认页面。然后(在您的 login.html 中)单击按钮,您可以调用一个函数(在 login.js 中的函数),在该函数中验证您的用户名和密码。

self.signIn = function() 
{
      //your validation

      if (login==success)
        {
           oj.Router.rootInstance.go('dashboard'); 
        }
     else
        {
            alert("check your details");
        }
};

确保您已在路由器配置中添加仪表板页面

 self.router.configure({
      'dashboard': {label: 'Dashboard'},
      'login': {label: '',isDefault: true}
                       });
于 2017-04-13T13:24:05.160 回答