我是棱角分明的新人
在我的应用程序中,我有一个text box
和一个包含ng-repeat
当用户在文本框中键入任何东西时,我正在过滤 通过使用以下代码
基于键入的文本的结果<input type=textbox ng-model="TypedText"/>
ng-repeat measure in newSearchResults |filter:TypedText
但是angular中的默认过滤器包含搜索。 我需要开头和下一个包含的结果。 我尝试编写自定义过滤器,但没有一个正在工作。帮助我创建自定义过滤器。
答案 0 :(得分:1)
您可以创建自己的自定义过滤器,如documentation。
所示{{ filter_expression | filter : array : expression : comparator}}
您需要在此处提供expression
功能。
所以,我们假设您要根据值&#34;是否包含&#34;进行过滤。搜索文本。您将在控制器中创建一个函数:
$scope.customFilter = function(value) {
// value parameter is the value passed in each ng-repeat
// In your example, it is the measure variable in "ng-repeat measure in
// newSearchResults
if (value.indexOf($scope.TypedText) !== -1) {
return true;
} else {
return false;
}
};
如果在自定义过滤器函数中返回true,则显示该值,否则不显示。
然后,您可以像使用任何其他过滤器一样使用自定义过滤器:
<div ng-repeat="measure in newSearchResults | filter:customFilter()">
//Repeating tags here
</div>
答案 1 :(得分:0)
如第一个答案中提到的那样,您可以将一个函数传递给过滤器,过滤器会为您进行检查。
$scope.customFilter = function(item) {
var typedTextLength = ($scope.typedText) ? ($scope.typedText).length : 0,
substring = (item.yourValueToCheck).substring(0, typedTextLength);
return ($scope.typedText === substring);
};