Javascript 目标中的UI路由器参数值未定义
我想将参数值从一个页面传递到另一个页面,而不在URL中显示这些值。因为我使用的是ui路由器,所以我遇到了“params”的东西,但不知怎么的,我无法让它工作。请参见下面的代码示例:- index.htmlJavascript 目标中的UI路由器参数值未定义,javascript,angularjs,angular-ui-router,angular-ui-router-extras,Javascript,Angularjs,Angular Ui Router,Angular Ui Router Extras,我想将参数值从一个页面传递到另一个页面,而不在URL中显示这些值。因为我使用的是ui路由器,所以我遇到了“params”的东西,但不知怎么的,我无法让它工作。请参见下面的代码示例:- index.html <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <script src="https://ajax.googleapis.com/ajax/libs/angu
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.3/angular-ui-router.min.js"></script>
<script src="../../Scripts/AngularControllers/LoginHomeControllers/RouteMainController.js"></script>
<script src="../../Scripts/AngularControllers/LoginHomeControllers/LoginController.js"></script>
<script src="../Scripts/AngularControllers/Test2Controller.js"></script>
<script src="../Scripts/AngularControllers/Test3Controller.js"></script>
</head>
<body>
<div ui-view="mainview"></div>
</body>
</html>
<div>
<button id="btnAdd" type="submit" ng-click="Login()">Login</button>
</div>
<!--Sample Code for displaying Menu Tab and corresponding link-->
<li>
<a href="#">Employees <span class="caret"></span></a>
<ul class="dropdown-menu sub-menu">
<li><a ui-sref=".employeeadd">Add Employee Record</a></li>
</ul>
</li>
<div ui-view="homedetailview"></div>
<div>
<div ng-repeat="request in requestData">
{{request.name}}
<a ui-sref=".requestdetail({paramOne:request.Id})">
</a>
</div>
</div>
<div>
<label>The id is: </label> {{requestId}}
</div>
Login.html
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.3/angular-ui-router.min.js"></script>
<script src="../../Scripts/AngularControllers/LoginHomeControllers/RouteMainController.js"></script>
<script src="../../Scripts/AngularControllers/LoginHomeControllers/LoginController.js"></script>
<script src="../Scripts/AngularControllers/Test2Controller.js"></script>
<script src="../Scripts/AngularControllers/Test3Controller.js"></script>
</head>
<body>
<div ui-view="mainview"></div>
</body>
</html>
<div>
<button id="btnAdd" type="submit" ng-click="Login()">Login</button>
</div>
<!--Sample Code for displaying Menu Tab and corresponding link-->
<li>
<a href="#">Employees <span class="caret"></span></a>
<ul class="dropdown-menu sub-menu">
<li><a ui-sref=".employeeadd">Add Employee Record</a></li>
</ul>
</li>
<div ui-view="homedetailview"></div>
<div>
<div ng-repeat="request in requestData">
{{request.name}}
<a ui-sref=".requestdetail({paramOne:request.Id})">
</a>
</div>
</div>
<div>
<label>The id is: </label> {{requestId}}
</div>
Home.html
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.3/angular-ui-router.min.js"></script>
<script src="../../Scripts/AngularControllers/LoginHomeControllers/RouteMainController.js"></script>
<script src="../../Scripts/AngularControllers/LoginHomeControllers/LoginController.js"></script>
<script src="../Scripts/AngularControllers/Test2Controller.js"></script>
<script src="../Scripts/AngularControllers/Test3Controller.js"></script>
</head>
<body>
<div ui-view="mainview"></div>
</body>
</html>
<div>
<button id="btnAdd" type="submit" ng-click="Login()">Login</button>
</div>
<!--Sample Code for displaying Menu Tab and corresponding link-->
<li>
<a href="#">Employees <span class="caret"></span></a>
<ul class="dropdown-menu sub-menu">
<li><a ui-sref=".employeeadd">Add Employee Record</a></li>
</ul>
</li>
<div ui-view="homedetailview"></div>
<div>
<div ng-repeat="request in requestData">
{{request.name}}
<a ui-sref=".requestdetail({paramOne:request.Id})">
</a>
</div>
</div>
<div>
<label>The id is: </label> {{requestId}}
</div>
Test3.html
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.3/angular-ui-router.min.js"></script>
<script src="../../Scripts/AngularControllers/LoginHomeControllers/RouteMainController.js"></script>
<script src="../../Scripts/AngularControllers/LoginHomeControllers/LoginController.js"></script>
<script src="../Scripts/AngularControllers/Test2Controller.js"></script>
<script src="../Scripts/AngularControllers/Test3Controller.js"></script>
</head>
<body>
<div ui-view="mainview"></div>
</body>
</html>
<div>
<button id="btnAdd" type="submit" ng-click="Login()">Login</button>
</div>
<!--Sample Code for displaying Menu Tab and corresponding link-->
<li>
<a href="#">Employees <span class="caret"></span></a>
<ul class="dropdown-menu sub-menu">
<li><a ui-sref=".employeeadd">Add Employee Record</a></li>
</ul>
</li>
<div ui-view="homedetailview"></div>
<div>
<div ng-repeat="request in requestData">
{{request.name}}
<a ui-sref=".requestdetail({paramOne:request.Id})">
</a>
</div>
</div>
<div>
<label>The id is: </label> {{requestId}}
</div>
因此,我想将paramOne的值从Test2.html传递到Test3.html,并在那里显示它。当前参数paramOne的值显示为“未定义”
请告诉我如何在此场景中使用参数,或者是否有更好的方法来解决此问题。请检查此选项
它提供了一个具有两种类型参数的工作示例
确保您的用法匹配:ui sref='stateName({param:value,param:value})
好的。。我为你准备:)
- 代码中的主要问题是定义
属性的位置,它应该在根级别(与Params
属性级别相同)url
- 将
更改为template:'Test3.html',
templateUrl:'Test3.html',
- 由于
在您定义的home.requestsummary.hello
的子级中处于状态,我认为您需要更改home.requestsummary
转换为'homedetailview@home“
,并在Test2.html中具有”test2detailview@home.requestsummary“
希望你能回答这个问题,兄弟:)也许这个参数还没有解决?如果您尝试:
myApp.controller("ctrlRequestDetail", ['$rootScope', '$scope', '$stateParams', ($rootScope, $scope, $stateParams) => {
$rootScope.$on('$stateChangeSuccess', (event, toState, toParams, fromState, fromParams) => {
console.log(toParams, fromParams)
});
}]);
请注意,添加的
$rootScope
依赖项即使在将stateName更改为home.requestsyyummary.requestdetail({paramOne:request.Id})之后,仍然将stateParams作为未定义状态。我需要在我的代码中更改除此之外的任何内容吗?正如您建议的,将Params属性移动到根级别只解决了我的问题。感谢您的帮助。前面的答案有助于解决问题。谢谢你的帮助。