Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 位置路径未路由到我想要的位置_Angularjs - Fatal编程技术网

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

Angularjs 位置路径未路由到我想要的位置,angularjs,Angularjs,我正在使用Angular JS构建一个web应用程序,但是我无法将它路由到我想要的地方 基本上,我有一个包含多个页面的html页面,我想在单击时更改页面href,以便每个包含的页面都有自己的url 在我的app.js中,我构建了以下路径: .when('/ContractDetail/:id/?detail', { templateUrl: 'app/views/ContractDetail.html' }) .when('/ContractDetail/

我正在使用Angular JS构建一个web应用程序,但是我无法将它路由到我想要的地方

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

在我的app.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>
但是没有假定路由,我总是被重定向到默认页面:
http://localhost:14959/#


我的目标是每次重定向时,我都使用正确的参数,例如
detail
,以显示正确的包含视图。在本例中,使用
detail
id的视图。

更改配置以适应
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)
}

更改配置以适应
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)
}

尝试
“#/ContractDetail/”+$routeParams.id+“/”+destination
@SaiUnique确实是错误的,但不幸的是,这不是问题所在。我已经更新了这部分代码。为什么在路由中声明了四次相同的url?请将其更改为仅一次。当(“/ContractDetail/:id/?destination”{templateUrl:'app/views/ContractDetail.html')并且您可以通过$routeParams.destination获取值时。这将是在ng中传递的4个值之一-click@Vivz这个解决方案有效。请回答,这样我就可以接受了,很多人都认为这确实是错误的,但不幸的是,这不是问题所在。我已经更新了这部分代码。为什么在路由中声明了四次相同的url?请将其更改为仅一次。当(“/ContractDetail/:id/?destination”{templateUrl:'app/views/ContractDetail.html')并且您可以通过$routeParams.destination获取值时。这将是在ng中传递的4个值之一-click@Vivz这个解决方案有效。请回答,这样我可以接受它,许多感谢实际上没有必要添加4条不同的路线,一条就足够了:DOk whates requirement:)实际上没有必要添加4条不同的路线,一条就足够了:DOk whates requirement:)