我的Json中有一些长网址,我试图找出使用angular的过滤器显示域名的最佳方式,或者只是一些javascript?
http://www.example.com/page-with-a-long-long-long-OMG-so-long-name.html
到
www.example.com
谢谢你!答案 0 :(得分:13)
在AngularJS中创建自己的过滤器非常容易:
app.filter( 'domain', function () {
return function ( input ) {
var matches,
output = "",
urls = /\w+:\/\/([\w|\.]+)/;
matches = urls.exec( input );
if ( matches !== null ) output = matches[1];
return output;
};
});
您可以在视图中轻松调用:
<span>{{ myUrl | domain }}</span>
这是一个Plunker:http://plnkr.co/edit/bVSv7n?builder&p=preview
这是一个超级简单的正则表达式,你可能想要扩展它,但它可以工作!
答案 1 :(得分:7)
这个角度过滤器也可以使用!
它非常酷且简单,因为它使用了内置URI解析功能的浏览器,而不是依赖于正则表达式。
angular.module('myCoolApp')
.filter('urlFilter', function ($document) {
return function (input) {
var parser = document.createElement('a');
parser.href = input;
return parser.hostname;
};
});
您可以在视图中实现它。
{{ myLongURL | urlFilter }}
如果myLongURL
为http://www.example.com/page-with-a-long-long-long-OMG-so-long-name.html,则在通过过滤器后,它会显示为example.com
。如果你想在开头www.
,你可以这样做!
www.{{myLongURL | urlFilter}}
答案 2 :(得分:0)
使用location.hostname
获取没有累积的域名。
答案 3 :(得分:0)
我创建了这个过滤器
angular.module('App').filter( 'domainOfUrl',['$filter',function ($filter) {
return function ( input ) {
var urlParts = input.split('/');
return urlParts[2];
};
}]);
以上过滤器的工作原理如下:
输入:https://www.amazon.in/b/ref=s9_acss_bw_***_x
输出:www.amazon.in
如果需要,请使用$filter
。