Angular Пользовательский фильтр JS '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>
Любая помощь будет принята с благодарностью!
Ответы
Ответ 1
Простой способ сделать это - добавить новый метод в свою область.
$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 с приведенным выше примером.
Ответ 2
Фильтр в объекте
$scope.fmyData = $filter('filter')($scope.AllMyData, $scope.filterOptions,function (actual, expected) {
return actual.toLowerCase().indexOf(expected.toLowerCase()) == 0;
});