我想为登录状态设置第一个参数可选,它可以使用下面的.state定义
$stateProvider
.state("login", {
url: '/:team/login/',
templateUrl: 'app/user/login.html',
controller: 'LoginController',
controllerAs: 'vm',
data: {
requiresAuth: false,
pageTitle: 'Login'
}
});
$urlRouterProvider.otherwise('/main');
现在我的问题是在没有团队名称时出现,而是出现两个正斜杠//
;
http://localhost:3000/#//login/
如何删除此额外的forwardslash /
,以便http://localhost:3000/#/login/
也开始工作
我的考试
url: '[/:team]/login/' and url: '/[:team/]login/'
但是,网址被编码后会变成http://localhost:3000/#/%5B/%5Dlogin/
$urlRouterProvider.when('//login', '/login');
但没有工作
添加了params条件
params: {
team: {squash: true, value: null }
}
但这甚至会阻止我之前的工作网址
我是否需要创建一个或多个可以使其工作的状态。请帮助
答案 0 :(得分:0)
请尝试更改一些代码。有两种可能的方式。两个人都在工作(团队在场和团队缺席),你不能简单地使用ui-sref(请不要使用href
和ui-sref
)。所以我在点击login
按钮
单程
HTML:
<a ng-click="goLogin(team.name)"> <i class="fa fa-sign-in"></i> Login </a>
<!-- expecting you are passing team name(you can change it) -->
JS:
$stateProvider
.state("login", {
url: ':team/login/',
templateUrl: 'app/user/login.html',
controller: 'LoginController',
controllerAs: 'vm',
data: {
requiresAuth: false,
pageTitle: 'Login'
}
});
$urlRouterProvider.otherwise('/main');
在您的控制器中。
$scope.goLogin = function(team_name){
if(team_name){
team_name = '/'+ team_name // will add a slash only if team_name is present
}
else{
team_name = ''
}
$state.go({'team': team_name})
}
如果不起作用,请将$sate
作为
.controller('myCtrl', ['$state', 'other_depend'], function($state, other_depend){
......
})