我只是想使用angulat location,但不知道它不起作用=>
app.controller("maintainenceCtrl", function ($scope, $window, $sessionStorage, ArbreeService, $location) {
angular.element(document).ready(function () {
var absUrl = $location.search();
console.log(absUrl);
});});
和我的网址==> http://localhost:49696/Team/Maintenance?selectionCriteria=bulkinvite
但不知道为什么不工作==> 返回null对象==> console ....
答案 0 :(得分:1)
确保启用
$locationProvider.html5Mode(true);
然后尝试以下方式。这是从URL
获取query string
值的100%正确方法
var search= $location.search();
if(search !=null)
{
var objectValue = search.selectionCriteria
}
有没有办法让参数值不使用angulra route或ui route。
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var queryValue = getParameterByName('selectionCriteria');
参考:Getting values from query string in an url using AngularJS $location
您可以使用$routeParams
使用ngRoute
从网址获取参数。这意味着您需要在应用程序中包含angular-route.js作为依赖项。有关如何在官方ngRoute documentation上执行此操作的详细信息。
问题的解决方案:
// You need to add 'ngRoute' as a dependency in your app
angular.module('ngApp', ['ngRoute'])
.config(function ($routeProvider, $locationProvider) {
// configure the routing rules here
$routeProvider.when('/backend/:type/:id', {
controller: 'PagesCtrl'
});
// enable HTML5mode to disable hashbang urls
$locationProvider.html5Mode(true);
})
.controller('PagesCtrl', function ($routeParams) {
console.log($routeParams.id, $routeParams.type);
});
如果您未启用$locationProvider.html5Mode(true);
。网址将使用hashbang(/#/
)。
有关路由的更多信息,请参阅官方角度$route API documentation。
旁注: 这个问题正在回答如何使用ng-Route实现此目的,但我建议使用ui-Router进行路由。它更灵活,提供更多功能,文档很棒,并且被认为是角度最佳的路由库。