Javascript 角度JS';从'开始;自定义过滤器

Javascript 角度JS';从'开始;自定义过滤器,javascript,jquery,angularjs,filter,startswith,Javascript,Jquery,Angularjs,Filter,Startswith,因此,我一直在尝试制作一个自定义过滤器,用于搜索“Startswith”参数,而不是“Contains”。我写的每个过滤器似乎都不能正常工作。下面是我试图实现的一个示例---> } -这就是我现在的处境 <ul border="1px" ng-repeat="msg in messages | filter:search:strict"> <li>{{msg.last_name}}</li> {{msg.last_name} 任何帮助都将不胜感激

因此,我一直在尝试制作一个自定义过滤器,用于搜索“Startswith”参数,而不是“Contains”。我写的每个过滤器似乎都不能正常工作。下面是我试图实现的一个示例--->

}

-这就是我现在的处境

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

<li>{{msg.last_name}}</li>
  • {{msg.last_name}

任何帮助都将不胜感激

一个简单的方法是在范围中添加一个新方法

$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">
下面是一个与上述示例相关的示例。

对象中的过滤器

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

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

请看这里:


>代码> ELEM。LaSTYNEXNOT/CODE >可以是一个长字符串,您可能需要考虑截断,然后与<代码>==< /代码>进行比较。find@Robin我在示例中添加了一个plunkr。什么对你不起作用?@马克·普朗克似乎不在那里。但这对我有用@谢谢你让我知道!我清理了我的垃圾,不小心把它删除了。现在已重新创建。@标记此项工作正常,我只是不明白所需的预期变量是什么?谢谢标记,超级解决方案。嗨@user35,请问有没有工作用的打捞工具?它真的需要我,谢谢。
  $scope.fmyData = $filter('filter')($scope.AllMyData, $scope.filterOptions,function (actual, expected) {
                    return actual.toLowerCase().indexOf(expected.toLowerCase()) == 0;
                });