Javascript 目标中的UI路由器参数值未定义

Javascript 目标中的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

我想将参数值从一个页面传递到另一个页面,而不在URL中显示这些值。因为我使用的是ui路由器,所以我遇到了“params”的东西,但不知怎么的,我无法让它工作。请参见下面的代码示例:-

index.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>
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“
    转换为
    ”test2detailview@home.requestsummary“
    ,并在Test2.html中具有

希望你能回答这个问题,兄弟:)

也许这个参数还没有解决?如果您尝试:

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属性移动到根级别只解决了我的问题。感谢您的帮助。前面的答案有助于解决问题。谢谢你的帮助。