【问题标题】:Angular routeParams returns an empty objectAngular routeParams 返回一个空对象
【发布时间】:2023-03-11 06:37:01
【问题描述】:

我正在尝试使用角度 routeProvider 和 routeParams 来获取 id 和 name 参数。 这是js:

angular.module("test",["ngRoute"])
 .config(["$routeProvider",function(a){
     a.when("/test/:id",{}).
       when("/tests/:name",{});
     }
 ]).controller("testCtrl",["$scope","$routeParams",function(a,b){
     a.result = b.name; //console.log(b.id);
 }
]);

还有 HTML

<html ng-app="test">
...
<body ng-controller="testCtrl">
<p>Test ID</p>
<a href="/test/1">1</a>
<a href="/test/2">2</a>


<p>Test Name</p>
<a href="/tests/test1">Test1</a>
<a href="/tests/test1">Test2</a>
<a href="/tests/test1">Test3</a>


<p>RouteParams Result</p>
<p>{{ result }}</p>
</body>

这不是 SPA,因此我没有在 when 函数中设置 templateUrl 和控制器。我只需要 URL 参数。我已经包含了 angular 和 angular-route 库

Here's the plunkr just in case

【问题讨论】:

  • 将控制器添加到您的 when 对象是否可以解决问题? IE。 when("/test/:id",{ 控制器:'testCtrl' })
  • 不,像以前一样返回未定义

标签: javascript angularjs html route-provider


【解决方案1】:
 a.when("/test/:id",{}).
   when("/tests/:name",{
     controller: "testCtrl"
   });
 }

您需要将控制器指定为当前状态才能获取 routeParams。

【讨论】:

  • 正如我上面提到的,我明确地将其排除在外,因为我的控制器会针对每个视图进行更改(例如 id=1,id=2)
  • 那你需要使用$routeChangeStart函数来获取当前状态的参数
  • 我已经修改了链接。该应用程序不是使用普通 routeProvider 和 routeParams 的 SPA。我只需要访问 url 中的参数。我试过 $scope.$on("routeChangeError"),routeChangeSuccess。但该事件没有被触发。
  • $locationChangeStart 被触发,但即使这样也会打印空对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 2021-03-31
  • 2014-07-15
  • 2018-08-25
相关资源
最近更新 更多