如何使用 AngularJS 读取 url 查询参数?

Posted

技术标签:

【中文标题】如何使用 AngularJS 读取 url 查询参数?【英文标题】:How to read url query parameters with AngularJS? 【发布时间】:2015-02-11 21:29:36 【问题描述】:

我想使用 AngularJS 获取特定 url 参数的值。然后我想为特定的文本框分配一个特定的值。

示例 URL 可能如下所示:

http://example.com/?param1=value1

我见过有关 $location、路由和服务的示例。我不想做任何事情。我只需要 param1 的值。有什么想法可以做到吗?

这是一个相应的 jsfiddle.net,经过多次尝试:http://jsfiddle.net/PT5BG/211/

【问题讨论】:

【参考方案1】:

使用$location是角度的方式

$location.search().param1; 应该给它如果 html5mode=true

否则你必须使用纯javascript。检查这个。 How can I get a specific parameter from location.search?

【讨论】:

对于html5mode,这条线在哪里? $locationProvider.html5Mode(true).hashPrefix('!') 我不太确定 hashbang 的用途。我将用问号分隔 url 键/值。【参考方案2】:

如果您使用的是 ngRoute,请查找 routeParams

如果您使用 ui-Router,请查找 stateParams

JS方式:

var key = 'param1';
var value = window.location.search.substring(window.location.search.indexOf(key)+key.length+1);

【讨论】:

OP 中没有提到路由。【参考方案3】:

试试这个。你需要在angular js中路由概念

  <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>AngularJS Routes example</title>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular-route.min.js"></script>
    </head>

    <body ng-app="sampleApp">

    <a href="#/route1/abcd">Route 1 + param</a><br/>
    <a href="#/route2/1234">Route 2 + param</a><br/>

    param
    <div ng-view></div>

    <script>
        var module = angular.module("sampleApp", ['ngRoute']);

        module.config(['$routeProvider',
            function($routeProvider) 
                $routeProvider.
                        when('/route1/:param', 
                            templateUrl: 'your_url1',
                            controller: 'RouteController'
                        ).
                        when('/route2/:param', 
                            templateUrl: 'your_url2',
                            controller: 'RouteController'
                        ).
                        otherwise(
                            redirectTo: '/'
                        );
            ]);

        module.controller("RouteController", function($scope, $routeParams) 
            $scope.param = $routeParams.param;
            alert($scope.param);
        )
    </script>        

    </body>
    </html>  

$routeParams 允许你输入参数的值

【讨论】:

由于 wordpress 先处理,这行不通。需要是查询参数。

以上是关于如何使用 AngularJS 读取 url 查询参数?的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS:从控制器内读取路由参数

使用 AngularJS 读取 GeoJSON 页面 [重复]

angularjs访问后台传参方式

如何使用 AngularJS 的 ui-router 提取查询参数?

如何用angularjs读取本地json

如何读取 ASP.NET 原始 URL 的查询字符串参数?