我正在尝试 AngularJS,这是我的第一次尝试。我正在尝试使用“开头为”而不是“包含”之类的内容来过滤对象数组,但我不明白如何做到这一点。
假设我有一个elements
像这样的数组
[{
amount: 50
}, {
amount: 25
}]
如果我想过滤5
两条记录都会显示,而我只想显示第一个记录,即以5
.
这就是我到目前为止为循环部分所做的事情(我还添加了排序和分页部分,即使可能不会影响我想要实现的目标)
<tr ng-repeat="element in elements | filter:search:strict | orderBy:predicate:reverse | filter:startFrom:currentPage*pageSize | limitTo:pageSize">
<td>{{element.name}}</td>
<td>{{hotel.amount}}</td>
</tr>
对于输入,我写下“5
"
<input class="pull-right" ng-model="search.amount">
我不明白如何在这里创建自定义处理程序,以便我可以解析每个第 n 项并查看它是否以传递的数字开头。
我只会编写基本的自定义过滤器:
JS
var iApp = angular.module("App", []);
iApp.filter('myfilter', function() {
function strStartsWith(str, prefix) {
return (str+"").indexOf(prefix) === 0;
}
return function( items, amount) {
var filtered = [];
angular.forEach(items, function(item) {
if(strStartsWith(item.amount, amount)){
filtered.push(item);
}
});
return filtered;
};
});
iApp.controller('TestController', function($scope)
{
$scope.amount='';
$scope.elements = [
{ amount: 50},
{ amount: 25 }];
});
HTML
<body data-ng-controller="TestController">
<input class="pull-right" ng-model="amount">
<table id="hotels">
<tr data-ng-repeat="element in elements | myfilter:amount">
<td>{{element.amount}}</td>
</tr>
</table>
<br/>
</body>
Demo Plunker http://plnkr.co/edit/4zIBlV20ysym3L0OhL3B?p=preview
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)