Angularjs:如何使用路由处理url中的参数

Angularjs:如何使用路由处理url中的参数,angularjs,parameters,routes,Angularjs,Parameters,Routes,我的URL方案如下: /drive/Fertilisation?open=potasse <a ng-click="openPageUrl('/drive/Fertilisation?open=potasse')">open corn page</a> $scope.openPageUrl = function (url) { closePopover(); console.log("Open page url "+url); $locatio

我的URL方案如下:

/drive/Fertilisation?open=potasse
<a ng-click="openPageUrl('/drive/Fertilisation?open=potasse')">open corn page</a>
$scope.openPageUrl = function (url) {
    closePopover();
    console.log("Open page url "+url);
    $location.url(url);
};
[Log] Open page url /drive/Fertilisation?open=potasse (kws.corn.app.js.html, line 8581)
[Log] Open page url /drive/Fertilisation (kws.corn.app.js.html, line 8581)
[Log] App controller: boots up Tue Jul 29 2014 22:54:42 GMT+0200 (CEST)
[Log] $scope.openPopupOnLoad = undefined; $routeParams.open = undefined (kws.corn.app.js.html, line 607)
[Log] App controller: already executed, won't do it again except routes (kws.corn.app.js.html, line 610)
[Log] App controller: boots up done Tue Jul 29 2014 22:54:42 GMT+0200 (CEST) (kws.corn.app.js.html, line 632)
我看到的页面如下:

/drive/Fertilisation?open=potasse
<a ng-click="openPageUrl('/drive/Fertilisation?open=potasse')">open corn page</a>
$scope.openPageUrl = function (url) {
    closePopover();
    console.log("Open page url "+url);
    $location.url(url);
};
[Log] Open page url /drive/Fertilisation?open=potasse (kws.corn.app.js.html, line 8581)
[Log] Open page url /drive/Fertilisation (kws.corn.app.js.html, line 8581)
[Log] App controller: boots up Tue Jul 29 2014 22:54:42 GMT+0200 (CEST)
[Log] $scope.openPopupOnLoad = undefined; $routeParams.open = undefined (kws.corn.app.js.html, line 607)
[Log] App controller: already executed, won't do it again except routes (kws.corn.app.js.html, line 610)
[Log] App controller: boots up done Tue Jul 29 2014 22:54:42 GMT+0200 (CEST) (kws.corn.app.js.html, line 632)
仍然在控制器中,路由被处理,控制器处理$routeParam如下:

// Potential popup to open
$scope.openPopupOnLoad = $routeParams.open;
console.log("$scope.openPopupOnLoad = "+$scope.openPopupOnLoad +"; $routeParams.open = "+ $routeParams.open);
但听起来好像控制器松开了参数,日志如下:

/drive/Fertilisation?open=potasse
<a ng-click="openPageUrl('/drive/Fertilisation?open=potasse')">open corn page</a>
$scope.openPageUrl = function (url) {
    closePopover();
    console.log("Open page url "+url);
    $location.url(url);
};
[Log] Open page url /drive/Fertilisation?open=potasse (kws.corn.app.js.html, line 8581)
[Log] Open page url /drive/Fertilisation (kws.corn.app.js.html, line 8581)
[Log] App controller: boots up Tue Jul 29 2014 22:54:42 GMT+0200 (CEST)
[Log] $scope.openPopupOnLoad = undefined; $routeParams.open = undefined (kws.corn.app.js.html, line 607)
[Log] App controller: already executed, won't do it again except routes (kws.corn.app.js.html, line 610)
[Log] App controller: boots up done Tue Jul 29 2014 22:54:42 GMT+0200 (CEST) (kws.corn.app.js.html, line 632)

您将如何处理参数?

您可以在应用程序的路由配置部分设置参数:

app.config(function($routeProvider) {
  $routeProvider
    .when("/route1/:param", {
      template: "<div>Route #1</div><div>Route param: {{param}}</div>",
      controller: "Ctrl"
    })
    .when("/route2/:param", {
      template: "<div>Route #2 </div><div>Route param: {{param}}</div>",
      controller: "Ctrl"
    });
});

请参见

对于遇到此问题并将自己的代码结构建立在解决方案基础上的任何人,请注意仅将url参数清理为要访问的特定文件。否则,由于您的应用程序通常具有较高的操作系统权限,您可能会遇到LFI或RFI漏洞。