Подтвердить что ты не робот

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>

Любая помощь будет принята с благодарностью!

4b9b3361

Ответ 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;
                });