2013-05-28 72 views
6

我有一個AngularJS應用程序,它使用$routeProvider$stateProvider。除了/之外,我可以讓所有的路線/州工作。AngularJS:路徑提供程序在根目錄下不起作用

這裏是我的app.js文件,當我去/但是當我去/#templates相應的視圖和控制器踢

var MailStash = angular.module("MailStash", ['ui.compat', 'ngResource', 'ngSanitize', 'ui.directives']). 
    config(function($stateProvider, $routeProvider, $urlRouterProvider) { 
     $routeProvider 
      .when('/', { controller: ListCtrl, templateUrl: '/js/partials/list.html' }); 

     $stateProvider 
      .state('templates', { 
        url: '/templates', 
        abstract: true, 
        templateUrl: '/js/partials/list.html', 
        controller: ListCtrl, 
      }) 
      .state('templates.list', { 
       // parent: 'templates', 
       url: '', 
       views: { 
       'main_content': { 
       templateUrl: '/js/partials/templates.new.html', 
       controller:CreateCtrl, 
       }, 
       } 
      }) 
      .state('templates.view', { 
       parent: 'templates', 
       url: '/{templateId}', 
       views: { 
       'main_content': { 
        templateUrl: '/js/partials/templates.view.html', 
        controller: ViewCtrl, 
       }, 
       }, 
      }) 
      .state('templates.new', { 
       url: '/new', 
       views: { 
       'main_content': { 
        templateUrl: '/js/partials/templates.new.html', 
        controller: CreateCtrl, 
       }, 
       }, 
      }) 
      .state('templates.edit', { 
       parent: 'templates', 
       url: '/edit/{templateId}', 
       views: { 
       'main_content': { 
        templateUrl: '/js/partials/templates.edit.html', 
        controller: EditCtrl, 
       }, 
       }, 
      }) 
    } 
    ) 
    .run(
     [  '$rootScope', '$state', '$stateParams', 
     function ($rootScope, $state, $stateParams) { 
      $rootScope.$state = $state; 
      $rootScope.$stateParams = $stateParams; 
     }] 
    ); 
... 

什麼也沒有發生。

任何人都可以看到什麼是錯的我$routeProvider以及爲什麼去/沒有做任何事情?

回答

1

您可以指定這樣

$routeProvider 
     .when('/templates', { controller: ListCtrl, templateUrl: '/js/partials/list.html' }) 
     .otherwise({ redirectTo: '/templates' }); 

希望這將幫助默認路由!

5

爲什麼不簡單地使用$urlRouterProvider和路由到/

$urlRouterProvider.otherwise('/'); 

然後設置一個新的狀態/

$stateProvider.state({ 
    name: 'home', 
    url: '/', 
    controller: 'HomeCtrl', 
    templateURL: 'home.html' 
}); 
1

否則是比較有用的重定向到一個錯誤頁面,如果URL是壞的。但您可以嘗試添加<base href="/" />以在您的索引中引用基本位置並添加$ locationProvider.html5Mode(true);在你的config函數中聲明路由後啓用,否則你需要在url中加#。

我希望這會幫助你。

相關問題