在AngularJS中按数字过滤数组



我想知道是否可以在AngularJS中执行类似以下代码的操作。目标是通过所有id过滤数组>=搜索id。我可以内联搜索吗?还是必须在javascript中作为自定义过滤器进行搜索?

<div style="margin-top:5px;margin-left:30px;">
    <div>
        <div>ID</div>
        <span class="glyphicon glyphicon-search"></span>&nbsp;
        <input type="text" ng-model="listFoodItems.searchid" />
    </div>
    <table class="table table-responsive">
        <thead>
            <tr>
                <th>ID</th>
                <th>Description</th>
                <th>Discount</th>
            </tr>
        </thead>
        <tfoot></tfoot>
        <tbody>
            <tr ng-repeat="row in listFoodItems.fullitemdescs | filter: EntryId >= searchid">
                <td>{{row.EntryId}}</td>
                <td>{{row.ItemDesc}}</td>
                <td>{{row.ItemDisc}}</td>
            </tr>
        </tbody>
    </table>
</div>

制作自定义过滤器的最佳方法,如:

HTML

    <div ng-app>
    <div ng-controller="MyCtrl">
    <input type="text" ng-model="searchid" />
       <ul>
           <li ng-repeat="person in people | filter:myFilter">
               {{person.id}}
               -
               {{person.name}}
           </li>
       </ul>
    </div>
</div>

JS-

function MyCtrl($scope){
    $scope.people = [
        {id: 1, name: "Mark"},
        {id: 2, name: "John"},
        {id:3, name: "Joe"}
    ];
    $scope.myFilter = function(item){
        if(item.id >= $scope.searchid){
            return item;
        }
    };
}

这是我的小提琴示例:https://jsfiddle.net/javierif/mmoo3s8m/

首先,创建一个函数

$scope.lessThan = function(prop, val){
    return function(item){
        return item[prop] < val;
    }
}

接下来,在您的ng-repeat

<tr ng-repeat="row in listFoodItems.fullitemdescs | filter: lessThan('EntryId', searchid)">

此处为原始答案:https://stackoverflow.com/a/24081564/5141584

最新更新