Angular $ routeProvider:为什么CRUD新路由不起作用?

时间:2014-08-25 02:54:04

标签: angularjs angularjs-scope

我正在使用RESTful CRUD操作构建Angular应用程序。除/users/new路径外,几乎所有内容都正常工作〜它显示 show 视图,而不是$ routeProvider中指定的 new 视图。但是,'/new'确实有效。我在js控制台中没有得到任何反馈。我应该阅读的任何想法或例子?

App.config [
  '$routeProvider'
  '$locationProvider'

  ($routeProvider, $locationProvider, config) ->
    $routeProvider
      .when('/',
        templateUrl: '/partials/home.html'
      ).when('/users',
        templateUrl: 'partials/users/index.html'
        controller: 'UserIndexCtrl'
      ).when('/users/:id',
        templateUrl: 'partials/users/show.html'
        controller: 'UserShowCtrl'
      ).when('/users/:id/edit',
        templateUrl: 'partials/users/edit.html'
        controller: 'UserEditCtrl'
      # why does following not work:
      ).when('/users/new',
        templateUrl: 'partials/users/new.html'
        controller: 'UserNewCtrl'
      # but this does:
      ).when('/new',
        templateUrl: 'partials/users/new.html'
        controller: 'UserNewCtrl'
      ).otherwise(redirectTo: '/')
    $locationProvider.html5Mode(true)
]

1 个答案:

答案 0 :(得分:2)

$ routeProvider尝试测试从TOP到BOTTOM定义的url模式 因此,/users/new匹配/users/:id匹配/users/new/users/new定义为第5之前定义为第3个。

如果您在/users/:id之前定义App.config [ '$routeProvider' '$locationProvider' ($routeProvider, $locationProvider, config) -> $routeProvider .when('/', templateUrl: '/partials/home.html' ).when('/users', templateUrl: 'partials/users/index.html' controller: 'UserIndexCtrl' # you should write it before '/users/:id' ).when('/users/new', templateUrl: 'partials/users/new.html' controller: 'UserNewCtrl' ).when('/users/:id', templateUrl: 'partials/users/show.html' controller: 'UserShowCtrl' ).when('/users/:id/edit', templateUrl: 'partials/users/edit.html' controller: 'UserEditCtrl' ).when('/new', templateUrl: 'partials/users/new.html' controller: 'UserNewCtrl' ).otherwise(redirectTo: '/') $locationProvider.html5Mode(true) ] ,我希望它能正常运作。

代码应如下所示。

{{1}}