Angular ui.router提供状态

时间:2016-11-28 18:57:10

标签: angularjs angular-ui-router

我有一个带有2个页面的角度/轨道应用,需要提供2个模板:

目前状态显示<ui-view></ui-view>在两个不同的页面上:

  1. http://localhost:3000/employees
  2. http://localhost:3000/employees/help_desk
  3. 问题是,#2要显示正确的状态,用户需要转到http://localhost:3000/employees/help_desk#/help_desk网址。相反,我需要用户能够转到http://localhost:3000/employees/help_desk和路由器来提供#/ help_desk模板。

    我将如何实现这一目标?

    到目前为止的ui.router代码:

    .config([
    '$stateProvider',
    '$urlRouterProvider',
    function($stateProvider, $urlRouterProvider) {
    
      //home state
      $stateProvider
        .state('home', {
          url: '/home',
          templateUrl: 'home/_home.html',
          controller: 'MainCtrl',
          resolve: {
              postPromise: ['posts', function(posts){
                var a = posts.getttAll();
                return a;
              }]
            }
        })
    
        //help desk state
        .state('help_desk', {
          url: '/help_desk',
          templateUrl: 'help_desk/_help_desk.html',
          controller: 'HelpDeskCtrl',
          resolve: {
          postPromise: ['help_desk', function(help_desk){
            var hd = help_desk.getttAll();
            return hd;
          }]
        }
        })
      $urlRouterProvider.otherwise('home');
    }])
    

2 个答案:

答案 0 :(得分:1)

  1. 无论用户访问哪个URL,您都需要从服务器提供相同的页面。
  2. 您需要在配置阶段调用$ location.html5Mode(true)来启用HTML模式。
  3. 有关html5Mode的更多信息:https://docs.angularjs.org/guide/ $ location

答案 1 :(得分:0)

无论您使用哪种路由器,都可以在#符号后按网址部分更改路由。在影响应用程序重新加载之前更改任何部分。

请查看此example

请不要查看templateUrl - 这是单独加载的。