4

我的 Json 中有一些长网址,我试图找出使用 angular 过滤器或仅显示一些 javascript 的域的最佳方法?

http://www.example.com/page-with-a-long-long-long-OMG-so-long-name.html

www.example.com

谢谢你 !

4

4 回答 4

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

这是一个超级简单的正则表达式,您可能想要扩展它,但它确实有效!

于 2013-01-30T01:15:59.207 回答
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 }}

如果myLongURLhttp://www.example.com/page-with-a-long-long-long-OMG-so-long-name.html,那么它将example.com在通过过滤器后显示。如果你想要一www.开始你可以这样做!

www.{{myLongURL | urlFilter}}
于 2015-04-05T21:11:29.837 回答
0

用于location.hostname获取没有应计的域。

http://fiddle.jshell.net/TUeJ7/

于 2013-01-30T01:10:29.113 回答
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如果需要,请使用。

于 2017-08-31T13:45:56.657 回答