我正在使用带有一些过滤器的Angularjs在DOM中操作以下数组
$scope.urls = [{
path: 'http://a.com/index'
}, {
path: 'http://a.com/home'
}, {
path: 'http://a.com/etc'
}, {
path: 'http://a.com/all'
}];
我曾尝试使用过滤器对路径进行子串,但它无效。
任何帮助都很棒。
答案 0 :(得分:1)
试试这个:
<强> HTML 强>
<div ng-controller = "fessCntrl">
<h1>Only path without domain name:</h1>
<ul>
<li ng-repeat="url in urls | myCustomFilter">{{url.path}}</li>
</ul>
</div>
<强> JS 强>
var fessmodule = angular.module('myModule', []);
fessmodule.controller('fessCntrl', function ($scope) {
$scope.urls = [{
path: 'http://a.com/index'
}, {
path: 'http://a.com/home'
}, {
path: 'http://a.com/etc'
}, {
path: 'http://a.com/all'
}];
$scope.otherCondition = true;
});
fessmodule.$inject = ['$scope'];
fessmodule.filter('myCustomFilter', function() {
return function( urls) {
var filtered = [];
angular.forEach(urls, function(url) {
filtered.push( {path:url.path.substring("http://a.com".length, url.path.length)});
});
return filtered;
};
});
演示 Fiddle
作为旁注:
尝试从控制器中写入过滤器。
答案 1 :(得分:1)
AngularJS v 1.4.5支持带有参数长度和偏移的数组(包括字符串)的标准“limitTo”过滤器:
<div ng-controller = "SampleController">
<h1>Result of substring equivalent filter:</h1>
<ul>
<li ng-repeat="url in urls">{{url.path | limitTo:5:12}}</li>
</ul>
</div>
注意:如果动态域长度(“http://a.com”静态长度为12),此解决方案将失败。
注2 :将长度增加到最大路径长度(Max为“index”,长度为5)。
AngularJS支持