[英]Is it possible to load a ui view with parameter when page is loaded?
我可以使用请求参数将用户导航到jsp主体负载上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作为请求参数。 但是除非我单击“仪表板”,否则用户不会被路由到仪表板。
我也尝试过使用其他方式-
$urlRouterProvider.otherwise(function($injector, $location){
var state = $injector.get('$state');
state.go("dashboard", $location.search());
return $location.path();
});
但是,这表明传递的stateParams是未定义的。
我很确定我缺少一些基本概念,但是我无法在Google中找到任何线索。 有人可以帮我吗?
您可以像这样传递状态参数:
URL可以采用几种不同的选项,我们可以像ngRoute一样在url中设置基本参数:
$stateProvider
.state('inbox', {
url: '/inbox/:inboxId',
template: '<h1>Welcome to your inbox</h1>',
controller: function($scope, $stateParams) {
$scope.inboxId = $stateParams.inboxId;
}
});
或者在您的情况下:
该应用捕获:clientId作为URL中的第二个组件。 例如, 如果用户转换到/ mybackend / 1 ,则$ stateParams.clientId变为1(因为$ stateParams将为{clientId:1})。
如果您愿意,我们还可以使用其他语法:
url: '/mybackend/{clientId}'
我刚刚解决了这个问题。 尽管这不是理想的解决方案,但到目前为止它仍在工作。 加载文档后,我立即在“仪表板”选项卡上触发了单击事件。
$(document).ready(function() {
$("#navItem1").trigger('click');
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.