$ location不是有角度的?

时间:2017-07-03 10:40:27

标签: angularjs

我只是想使用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 ....

1 个答案:

答案 0 :(得分:1)

确保启用

$locationProvider.html5Mode(true); 

然后尝试以下方式。这是从URL

获取query string值的100%正确方法
 var search= $location.search();
 if(search !=null)
 {
   var objectValue = search.selectionCriteria
 }

UPDATE1

  

有没有办法让参数值不使用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

更新2

您可以使用$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进行路由。它更灵活,提供更多功能,文档很棒,并且被认为是角度最佳的路由库。