Angular JS“Startswith”自定义过滤器

Angular JS 'Startswith' custom filter

本文关键字:自定义 过滤器 Startswith JS Angular      更新时间:2023-09-26

所以我一直在尝试制作一个自定义过滤器,用于搜索"Startswith"参数而不是"包含"。我编写的每个过滤器似乎都无法正常工作。以下是我试图实现的一个例子---> http://jsfiddle.net/DMSChris/9ptr9/

function FilterCtrl() {
var scope = this;
scope.doFilter = function(elem) { 
    if(!scope.searchText) return true;
    return elem.last_name.toLowerCase().indexOf( scope.searchText.toLowerCase()) == 0; 
};

}

http://jsbin.com/OyubElO/1/edit - 这就是我现在所处的位置。

  <ul border="1px" ng-repeat="msg in messages | filter:search:strict">
<li>{{msg.last_name}}</li>

任何帮助将不胜感激!

执行此操作的一种简单方法是向范围添加新方法。

$scope.startsWith = function (actual, expected) {
    var lowerStr = (actual + "").toLowerCase();
    return lowerStr.indexOf(expected.toLowerCase()) === 0;
}

然后更改元素上的筛选器语法。

<ul border="1px" ng-repeat="msg in messages | filter:search:startsWith">

这是一个带有上面示例的工作 plunkr。

在对象中过滤

  $scope.fmyData = $filter('filter')($scope.AllMyData, $scope.filterOptions,function (actual, expected) {
                    return actual.toLowerCase().indexOf(expected.toLowerCase()) == 0;
                });

现在纯javascript本身在字符串上具有startsWith()方法。 但它不会得到IE11的支持.

看这里:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith