Объединить результаты нескольких столбцов UI.Bootstrap Typeahead Angularjs

У меня есть панель поиска, использующая ui.bootstrap typeahead. Я ищу в таблице пользователей электронную почту, имя и фамилию.

У меня есть все, что связано, но он работает только с первым ИЛИ фамилией, вводимой в поле ввода, а не оба вместе.
Имя и фамилия не объединяются вместе.
При вводе электронного письма будет показан только результат имени, к которому оно относится, а не заполнение электронного письма.

Я надеюсь, что последняя часть имеет смысл.

Я предполагаю, что мне нужно обрабатывать данные по-разному, прежде чем они будут возвращены обратно в HTML. Но я не уверен, как именно это сделать.

Вот что у меня так далеко:

navbar.HTML

<input placeholder="Search..."ng-model="navbar.selected"uib-typeahead="results as results.first_name + ' ' + results.last_name for results in navbar.getSearchResults($viewValue)"type="text"typeahead-loading="loadingSearch"typeahead-min-length="3"typeahead-no-results="noResults"class="form-control" />

search.Controller

var vm = this;

vm.getSearchResults = getSearchResults;

function getSearchResults(search) {
return searchService.getSearchResults(search);
}}

search.Service

function getSearchResults(search) {
return $http.get(API_URL + '/search/' + search)
.then(handleSuccess)
.catch(handleError);
}

// private functions
function handleSuccess(response) {
return response.data[0];
}

function handleError(error) {
$log.error('XHR error: ');
$log.error(error);
return $q.reject(error);
}}

PHP

    public function searchUsers($search)
{
$this->db->where('email', "$search%", 'like', 'or')->
where('first_name', "$search%", 'like', 'or')->
where('last_name', "$search%", 'like', 'or');
return $this->db->get('users');}
public function getSearch($search)
{
$results = array();
$search = $this->repository->searchUsers($search);
foreach ($search as $value) {
$newResult = array();
$newResult['email'] = $value['email'];
$newResult['first_name'] = $value['first_name'];
$newResult['last_name'] = $value['last_name'];
$results[] = $newResult;
}
return $results;
}

Пожалуйста, дайте мне знать, если я что-то пропустил.
Любая помощь будет принята с благодарностью.

РЕДАКТИРОВАТЬ:
Одна вещь, которую я обнаружил, оглядываясь назад на документацию typeahead, — это использование пользовательских шаблонов.

Используя пользовательский шаблон, я могу добавить в список результатов поиска по электронной почте.

    <script type="text/ng-template" id="customTemplate.html">
<a>
<span ng-bind-html="match.label | uibTypeaheadHighlight:query"></span><br/>
<span ng-bind-html="match.model.email | uibTypeaheadHighlight:query"></span><br/>
<br/>
</a>
</script>

«UibTypeaheadHighlight: query» может быть избыточным, но вот как я заставил его работать на меня.

Я все еще не могу получить имя и фамилию, чтобы соединить должным образом все же.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]