我可以使用请求参数将用户导航到jsp body load上的jsp中存在的第一个ui-sref链接吗?
我正在分享我的代码。
test.jsp的
<body ng-app="myApp">
<nav class="navbar navbar-inverse">
<ul class="nav navbar-nav navbar-right">
<li class="nav-iem">
<a>${clientId}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#" ui-sref="dashboard({clientID: ${clientId}})">Dashboard</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#" ui-sref="clientDetail({clientID: ${clientId}})">Profile</a>
</li>
</ul>
</nav>
AngularApp.js
var app = angular.module('myApp', ['ui.router','ui.bootstrap']);
app.config(function($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider
.state('dashboard', {
url: '/dashboard/:clientID',
resolve: {
getList1: [ 'getService', '$stateParams', function(getService, $stateParams) {
return getService.getData('/mybackend/url1?clientId=' + $stateParams.clientID);
} ]
},
templateUrl: '/dashboard.html',
controller: 'dashboardCtrl'
})
.state('clientDetail', {
url: '/clientDetail/:clientID',
resolve: {
user: [ 'getService', '$stateParams', function(getService,$stateParams) {
return getService.getData('/mybackend/url2?clientId=' + $stateParams.clientID);
} ]
},
templateUrl: '/myProfile.html',
controller : 'myProfileCtrl',
})
当我成功登录时,我从后端收到我的clientID作为请求参数。但是,除非我点击&#34; Dashboard&#34;。
,否则用户不会被路由到仪表板我也尝试过这样使用 -
$urlRouterProvider.otherwise(function($injector, $location){
var state = $injector.get('$state');
state.go("dashboard", $location.search());
return $location.path();
});
但它表明stateParams传递未定义。
我很确定我遗漏了一些基本概念,但我无法在谷歌中找到任何线索。有人可以帮帮我吗?
答案 0 :(得分:0)
您可以传递状态参数,如下所示:
URL可以有几个不同的选项,我们可以在网址中设置基本参数,如ngRoute:
$stateProvider
.state('inbox', {
url: '/inbox/:inboxId',
template: '<h1>Welcome to your inbox</h1>',
controller: function($scope, $stateParams) {
$scope.inboxId = $stateParams.inboxId;
}
});
或者在你的情况下:
app捕获:clientId作为URL中的第二个组件。例如,如果用户转换为/ mybackend / 1 ,则$ stateParams.clientId变为1(因为$ stateParams将为{clientId:1})。
如果您愿意,我们也可以使用不同的语法:
url: '/mybackend/{clientId}'
答案 1 :(得分:0)
我刚刚解决了这个问题。虽然它不是理想的解决方案,但它现在正在运作。我在&#34;仪表板上触发了点击事件&#34;文档加载后立即选中。
$(document).ready(function() {
$("#navItem1").trigger('click');
})