这是我的UI-Router状态:
$stateProvider.state("project",{
url:'/project/:projectid/:typeid/:directoryid',
templateUrl: '/app/project/view.html',
controller: 'projectViewController',
params:{
typeid:{squash:true,value:null},
directoryid:{squash:true,value:null},
}
});
这些网址工作正常:
/project/5
/project/5/1
/project/5/1/2
但是,这个网址“/ project”工作正常(或匹配),但不应该。
:应该要求projectid。如果没有传递值,则url不匹配,“否则”应切换到默认状态。
如何制作以便需要投射?
“typeid”和“directoryid”参数应该是可选的。
答案 0 :(得分:1)
通过像
这样的解决来检查条件$stateProvider.state("project",{
url:'/project/:projectid/:typeid/:directoryid',
templateUrl: '/app/project/view.html',
controller: 'projectViewController',
params:{
typeid:{squash:true,value:null},
directoryid:{squash:true,value:null},
},
resolve: function($stateParams, $location){
//Check if url parameter is missing.
if ($stateParams.projectid === undefined) {
//Do something such as navigating to a different page.
$location.path('/'); // put any location where you want to redirect
}
}
});