La funzionalità typeahead nell'interfaccia utente di AngularJs sembra semplice e potente, tuttavia, ho cercato di capire come ottenere la corrispondenza sui caratteri principali. Ad esempio, se digito "A" nella casella di input mi piacerebbe vedere tutti gli stati che iniziano con "A" e non tutti gli stati che contengono una "A" nel nome. Ho cercato per un paio di giorni su questo e sembra che Angular abbia il concetto di un filtro personalizzato che ha un 'comparatore' I documenti su questo hanno un semplice esempio che non mostra la sintassi esatta per l'implementazione di un comparatoreAngularJs UI typeahead corrisponde ai caratteri principali
L'html è simile a questo :
<div>Selected: <span>{{selected}}</span></div>
<div><input type="text" ng-model="selected" typeahead="name for name in states | filter:selected"></div>
Il javascript di base assomiglia a questo
angular.module('firstChar', ['ui.bootstrap']);
function TypeaheadCtrl($scope) {
$scope.selected = undefined;
$scope.states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Dakota', 'North Carolina', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'];
}
Ho un plunker qui http://plnkr.co/edit/LT6pAnS8asnpFEd5e6Ri
Quindi la sfida in breve è far sì che il typeahead AngularUI corrisponda solo ai personaggi principali.
Qualsiasi aiuto o idea su questo sarebbe molto apprezzato.
WOW ! Grazie! Sembra funzionare perfettamente. Fornisce un bell'esempio dei concetti e la sintassi concatenata di Angular. –
Una domanda però ... Come definiamo lo 'stato' nella funzione startsWith? Mi rendo conto che sta iterando attraverso gli stati, ma come fa a venire il nome/oggetto 'stato'. Sto cercando di utilizzare questo codice in un esempio più realistico e non funziona. –
La risposta alla mia domanda è che 'stato' nell'esempio è il valore corrente dell'array utilizzato per compilare l'elenco typeahead. Il mio problema è che sto usando un oggetto per popolare il typeahead in modo da poter ottenere l''id' per il valore selezionato. Angolare itera attraverso l'oggetto e passa ciascuno dei membri dell'oggetto alla funzione di confronto per eseguire il confronto tra stringhe. –