从AngularJS读取URL

时间:2016-08-28 20:40:08

标签: javascript angularjs

在我决定实施apache,mod重写之前,我一切都运行得很完美。有2个值,2个参数,我需要的信息。我正在使用:

        $scope.scan_id = $location.search().scan_id;
        $scope.scan_domain = $location.search().scan_domain;

当然,它没有任何问题。 由于之前的网址为:

http://domainname.com/scanner/view_scan.html#?scan_id=10&scan_domain=clarin.com

现在,当前的网址结构为:

http://domainname.com/scanner/view/scan/id/10/domain/clarin.com

我正在寻找一种使用$ location服务的简单方法。我想到像正则表达式那样寻找 scan / id /([0-9]){0,9999} / domain /(.)*但是我当然不知道如何在AngularJS中解决这个问题。

提前致谢!

附录

如果不清楚,我正在尝试获取扫描ID和域名的值。

2 个答案:

答案 0 :(得分:0)

您可以使用$location.path()获取网址的路径 即

如果网址为http://example.com/#/some/path?foo=bar&baz=xoxo

你会得到$ location.path() - > /some/path

正如你所说,没有参数。首先获取路径,然后相应地拆分URL。

例如,请参阅以下内容:



var myUrl = 'http://domainname.com/scanner/view/scan/id/10/domain/clarin.com',
    path = '/scanner/view/scan/id/10/domain/clarin.com',
    scanID,
    domainName,
    firstSplitStr,
    secondSplitStr; 
//path is what the $location.path() service would return you. 

firstSplitStr = '/scanner/view/scan/id/'; //as you already know the format

secondSplitStr = '/domain/'

scanID = path.replace(firstSplitStr, '').split(secondSplitStr)[0];

domainName = path.replace(firstSplitStr, '').split(secondSplitStr)[1];

console.log(scanID, domainName);




答案 1 :(得分:0)

我决定使用普通,vainilla JS和正则表达式。

$scope.analizar_posicion = function() {

        //revisamos si los params no poseen información
        if (!$scope.scan_id || !$scope.scan_domain ) {

            //procesamos la dirección
            var address_now = $location.absUrl();

            //buscamos el scan id
            var scan_id_expresion = /scan\/id\/([0-9]{0,9})/i;
            var scan_id = address_now.match(scan_id_expresion);
            var scan_id = scan_id[1];
            console.log(scan_id);

            //buscamos el nombre de dominio
            var scan_domain_expresion = /domain\/((.){1,99})/i;
            var scan_domain = address_now.match(scan_domain_expresion);
            var scan_domain = scan_domain[1];
            console.log(scan_domain);

            //asociamos las variables al scope.
            $scope.scan_id = scan_id;
            $scope.scan_domain = scan_domain;

        }

    }