AngularJS UI-Bootstrap Typeahead

Я использую AngularJS и Typeahead AngularUI Bootstrap. Я хочу использовать фильтр с несколькими параметрами. Вот мой элемент управления вводом:

<input id="tbUsers" class="form-control" ng-model="unit.userSel"
                                typeahead="user as user._FName + '(' +  user._LName +')' for user in allUsers | filter:{_FName : _LName:$viewValue}:myFunc | limitTo:8"                                    
                                typeahead-editable="false" required />

В моем контроллере у меня есть функция myFunc:

$scope.myFunc = function (FName, LName, viewValue) {
    //logic here
    return true;
}

Я не могу передать несколько параметров в myFunc. Если я удалю параметр LName из функции контроллера и входного фильтра, он будет работать нормально. Если я добавлю 2 параметра, myFunc не будет вызван.

Пожалуйста помоги!!
P.S.: Мой первый вопрос здесь, так что, возможно, я нарушил несколько правил, извините за это!


person Ashish Shirode    schedule 17.02.2015    source источник


Ответы (1)


Таким образом, есть много решений проблемы, с которой вы столкнулись. Если вам нужен «правильный ответ», фильтр выполняется через модуль фильтра Angular, поэтому вам следует взглянуть на следующее: https://docs.angularjs.org/api/ng/filter/filter (простой способ сделать это - просто объединить два параметра в ng-модели)

Если вам нужен действительно простой ответ... Вы можете просто передать ему объект вместо свойства объекта, таким образом, он фильтрует все.

person John    schedule 17.02.2015
comment
Что ж, это правда, но тогда мне нужно отфильтровать только по 2 полям, а этот объект огромен, с более чем 10 полями. Модуль фильтра Angular на данный момент выглядит вполне осуществимым способом. - person Ashish Shirode; 17.02.2015
comment
Фильтр в начальной загрузке пользовательского интерфейса основан на фильтре (поэтому вы можете делать то же самое...) - person John; 17.02.2015