【问题标题】:angularJS ui-routing the admin dashboard is not workingangularJS ui-routing 管理仪表板不起作用
【发布时间】:2015-06-12 13:38:48
【问题描述】:

最初的问题

我最初的目标是在我的 angularJS 应用程序的管理仪表板之外创建一个登录页面。我遇到的问题是登录页面始终包含在管理仪表板骨架中,因为它是一个单页应用程序并且仪表板骨架位于 index.html

解决方案 1

有人向我建议 ui 路由,所以我使用它并能够创建登录页面和管理仪表板。

解决方案 1 问题

现在我遇到的问题是管理仪表板在导航时无法正常工作。因为管理仪表板标题和侧边栏应该是我浏览的页面的骨架。但是我不确定如何再次设置它。它最初起作用是因为管理仪表板标题和侧边栏是 index.html 的一部分,现在它是 header.html 模板的一部分。

这是我的 routes.js 代码:

angular.module('RDash').config(['$stateProvider', '$urlRouterProvider',
    function($stateProvider, $urlRouterProvider, $routeProvider, $locationProvider) {



            // Login
            $stateProvider
            .state('login', {
                url: "",
                views: {
                    "viewA": {
                        templateUrl: "templates/login.html"
                    }
                }

            })
            .state('adminDashboard', {     //admin Dashboard
                url: "/adminDashboard",
                views: {
                    "viewA": {
                        templateUrl: "templates/header.html"
                    }
                }
            })
            .state('dashboard', {    //dashboard nav link in admin dashboard
                    url: '/dashboard',
                    templateUrl: 'templates/dashboard.html'
                })
            .state('tables', {      //tables nav link in admin dashboard
                    url: '/tables',
                    templateUrl: 'templates/tables.html'
                })
            .state('question', {   //question nav link in admin dashboard
                    url: '/question',
                    templateUrl: 'templates/question.html'
                });
        }
    ]);

如您所见,有两个大视图,adminDashboardlogin,在 adminDashboard 视图内部,还有一个用于其他三个路由的导航栏:dashboard、表格和问题

这是我的 index.html 代码:

<!doctype html>
<html lang="en" ng-app="RDash">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Application</title>
  <!-- STYLES -->
  <!-- build:css lib/css/main.min.css -->
  <link rel="stylesheet" type="text/css" href="components/bootstrap/dist/css/bootstrap.min.css">
  <link rel="stylesheet" type="text/css" href="components/font-awesome/css/font-awesome.min.css">
  <link rel="stylesheet" type="text/css" href="components/rdash-ui/dist/css/rdash.min.css">
  <!-- endbuild -->
  <!-- SCRIPTS -->
  <!-- build:js lib/js/main.min.js -->
  <script type="text/javascript" src="components/angular/angular.min.js"></script>
  <script type="text/javascript" src="components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>
  <script type="text/javascript" src="components/angular-cookies/angular-cookies.min.js"></script>
  <script type="text/javascript" src="components/angular-ui-router/release/angular-ui-router.min.js"></script>

  <!-- endbuild -->
  <!-- Custom Scripts -->
  <script type="text/javascript" src="js/dashboard.min.js"></script>
</head>
<body ng-controller="MasterCtrl">
  <!-- NAVBAR FOR LOGIN AND DASHBOARD-->
  <div class="navbar">
    <div class="navbar-inner">
      <a class="brand" ui-sref="login">Quick Start</a>
      <ul class="nav">
        <li><a ui-sref="login">login</a></li>
        <li><a ui-sref="adminDashboard">dashboard</a></li>
      </ul>
    </div>
  </div>
  <h1>Application</h1>
     <div class="row">
    <div class="span6">
      <!-- div tag for ui-view-->
      <div class="well" ui-view="viewA"></div>        
    </div>
  </div> 
</body>
</html>

我为索引页面创建了一个导航栏,用于从登录到管理仪表板(只是临时的),正如您所见,ui-view 的 div 标记通过在index.html 页面

那么我们如何让其他三个路由(仪表板、表格和问题)再次成为管理仪表板骨架的一部分?

我不确定我是否采取了正确的方法来完成这项工作

我也希望我能清楚地解释我的目标。请询问,如果我的解释有任何含糊之处,我会更新

提前谢谢你

【问题讨论】:

    标签: angularjs angular-ui-router


    【解决方案1】:

    您可以使用参数 abstract:true 将 adminDashboard 状态设为抽象状态

    然后您可以使用“。”访问其他三个状态。操作员 例如,您想将“表”状态设为 adminDashboard 的子项,因此请定义 表状态为 adminDashboard.tables

    【讨论】:

    • 现在很好,但我添加了两个,只有第一个导航仪表板按钮在工作.state('adminDashboard.dashboard', { url: '/:dashboard', templateUrl: 'templates/adminDashboard.dashboard.html' }) .state('adminDashboard.tables', { url: '/:tables', templateUrl: 'templates/adminDashboard.tables.html' }); 第二个导航(表格)更改了路径,但向我显示了相同的视图页面(仪表板)。你能找出原因吗?
    • 它无法完全正常工作,您无法判断第二个导航按钮的问题是什么?
    • 原来我需要在 html 文件中使用 ui-sref 而不是 href 。感谢您的帮助
    猜你喜欢
    • 2017-08-07
    • 2016-01-01
    • 2018-11-19
    • 2019-09-01
    • 2016-07-02
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多