使用angularJS和UI - Router
,我设置了一些路线。
然而,其中一条路线(/events/create
),"创建" URL的一部分被创建为我的另一个路由的参数,而不是解析为正确的声明地址。
知道如何解决这个问题吗?
events.js
angular.module('events', [
'events.show',
'events.create',
])
;
事件-create.js
angular.module('events.create', [
])
.config(function($stateProvider) {
$stateProvider
.state('sb.events.create', {
url: '/events/create',
views: {
'forms@': {
templateUrl: 'app/events/create/event-create.tmpl.html',
controller: 'EventsCreateCtrl as createCtrl',
},
'main@': {
}
},
})
})
最后,events-show.js
angular.module('events.show', [
])
.config(function($stateProvider) {
$stateProvider
.state('sb.events.show', {
url: 'events/{eventId}',
views: {
'forms@': {
templateUrl: 'app/events/show/event-show.tmpl.html',
controller: 'EventsShowCtrl as showCtrl',
},
'main@': {
}
},
})
})
.controller('EventsShowCtrl',
function EventsShowCtrl($state, $stateParams, EventsModel, UserModel, $rootScope) {
})
;
如您所见,events.show声明了要使用的参数。这是在刷新或直接访问网址时用于网址events/create
的状态。
如果我以正常方式导航到此状态,则使用正确的状态和模板。
答案 0 :(得分:0)
有a working plunker。如何解决它的方法是改变声明的顺序
确保此状态
.state('sb.events.create', {
url: '/events/create',
在此
之前注册(执行$stateProvider.state()
)
.state('sb.events.show', {
//url: 'events/{eventId}',
url: '/events/{eventId}',
注意:请确保网址:'/ events / {eventId}'以'/'开头
原因是,该命令决定万一,我们可以两种方式对待一个网址。而 url: '/events/create'
,可以真正用作第二个。 (“创建”作为参数eventId
)
检查here