在我决定实施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和域名的值。
答案 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;
}
}