Angular JS'Startswith'自定义过滤器

时间:2013-10-21 17:47:49

标签: javascript jquery angularjs filter startswith

所以我一直在尝试制作一个自定义过滤器来搜索'Startswith'参数而不是'Contains'。我写的每个过滤器似乎都没有正常工作。这是我想要实现的一个例子---> 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>

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:33)

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

$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">

这是一个working plunkr,其中包含上述示例。

答案 1 :(得分:3)

在对象中过滤

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

答案 2 :(得分:0)

现在纯javascript本身对字符串有startsWith()方法。但IE11不支持它。

见这里:

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