Angular $routeProvider:为什么 CRUD 新路由不起作用? [英] Angular $routeProvider: Why does CRUD new route not work?
问题描述
我正在构建一个带有 RESTful CRUD 操作的 Angular 应用程序.除了 /users/new
路由之外几乎所有东西都在工作~它显示 show 视图而不是 $routeProvider 中指定的 new 视图.但是, '/new'
确实有效.我在 js 控制台中没有得到任何反馈.我应该阅读任何想法或示例?
I'm building an Angular app with RESTful CRUD actions. Almost everything is working except for the /users/new
route ~ it displays the show view instead of new view specified in $routeProvider. However, '/new'
does work. I'm not getting any feedback in the js console. Any ideas or examples I should read?
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)
]
推荐答案
$routeProvider 尝试测试从 TOP 到 BOTTOM 定义的 url 模式.
所以 URL 模式 /users/new
匹配 /users/:id
在 /users/new
定义的第 5 个之前定义的第 3 个.
The $routeProvider try to test url pattern defined from TOP to BOTTOM.
So the URL pattern /users/new
match /users/:id
defined 3rd before /users/new
defined 5th.
如果你在 /users/:id
之前定义了 /users/new
,我希望它可以正常工作.
If you define /users/new
before /users/:id
, I expect that it would work properly.
代码应该如下所示.
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)
]
这篇关于Angular $routeProvider:为什么 CRUD 新路由不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!