6

我有一个 AngularJS 应用程序,它使用$routeProvider和一个$stateProvider. 我可以让我的所有路线/状态除了/.

这是我的 app.js 文件

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;
        }]
    );
...

当我去的时候什么都没有发生,/但是当我去/#templates适当的视图和控制器时。

谁能看到我有什么问题$routeProvider,为什么要去/没有做任何事情?

4

3 回答 3

5

为什么不简单地使用$urlRouterProvider并路由到/

$urlRouterProvider.otherwise('/'); 

然后为/

$stateProvider.state({
  name: 'home',
  url: '/',
  controller: 'HomeCtrl',
  templateURL: 'home.html'
});
于 2014-01-15T19:41:50.937 回答
1

您可以像这样指定默认路由

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

希望这会有所帮助!

于 2013-05-28T11:10:18.750 回答
1

否则,如果 url 错误,则重定向到错误页面更有用。但是您可以尝试添加<base href="/" />以引用索引中的基本位置并添加 $locationProvider.html5Mode(true); 在你的配置函数中声明路由后启用,否则你需要在url中添加#。

我希望这能帮到您。

于 2015-07-21T14:21:00.250 回答