位置路径未路由到我想要的位置



我正在使用Angular JS构建一个Web应用程序,但我无法将其路由到我想要的位置。

基本上我有一个包含多个页面的 html 页面,我想在单击时更改页面 href,以便每个包含的页面都有自己的 URL。

在我的应用程序中.js我构建了以下路由:

.when('/ContractDetail/:id/?detail', {
templateUrl: 'app/views/ContractDetail.html'
})
.when('/ContractDetail/:id/?movements', {
templateUrl: 'app/views/ContractDetail.html'
})
.when('/ContractDetail/:id/?historic', {
templateUrl: 'app/views/ContractDetail.html'
})
.when('/ContractDetail/:id/?movements', {
templateUrl: 'app/views/ContractDetail.html'
})

这是我的 html 页面,其中包含相应的视图:

<ul ng-model="selected" ng-change="switchUrl()">
<li class="detailTitle"><a id="detailContract" ng-click="changeHref('detail')"'>{{appResources.CommonDetailsDetailTabbedTitle}}</a></li>                     
<li class="movementTitle active"><a id="movContract"  ng-click="changeHref('movements')">{{appResources.CommonDetailsMovementsTabbedTitle}}</a></li>
<li class="historicTitle"><a id="histContract" ng-click="changeHref('historic')">{{appResources.CommonDetailsHistoricalTabbedTitle}}</a></li>
<li class="messagesTitle"><a id="msgContract" ng-click="changeHref('messages')">{{appResources.CommonDetailsMessagesTabbedTitle}}</a></li>
</ul>
<div id="detail" class="containerTxt" ng-include="'app/views/includes/ContractDetails.html'"></div>
<div id="movements" class="containerTxt active" ng-include="'app/views/includes/ContractMovements.html'"></div>
<div id="historic" class="containerTxt" ng-include="'app/views/includes/ContractHistoric.html'"></div>
<div id="messages" class="containerTxt" ng-include="'app/views/includes/ContractMessages.html'"></div>

控制器中的函数正在执行以下操作:

$scope.changeHref = function (destination) {
$location.path("#/ContractDetail/" + $routeParams.id + "/" + destination)
}

但是没有假设路线,我总是被重定向到默认页面:http://localhost:14959/#

我的目标是每次重定向时,我都会使用正确的参数,例如detail在这种情况下显示正确的包含视图,即具有detailid 的视图。

更改配置以适应ng-include的所有 url,并且可选参数应具有正确的语法

.when('/ContractDetail/:id/:detail?', {
templateUrl: 'app/views/ContractDetail.html'
})
.when('/ContractDetail/:id/:movements?', {
templateUrl: 'app/views/ContractMovements.html'
})
.when('/ContractDetail/:id/:historic?', {
templateUrl: 'app/views/ContractHistoric.html'
})
.when('/ContractDetail/:id/:movements?', {
templateUrl: 'app/views/ContractMessages.html'
})

同时从控制器的$location.path中删除 #

$scope.changeHref = function (destination) {
$location.path("/ContractDetail/" + $routeParams.id + "/" + destination)
}

相关内容

最新更新