AngularJs INTERFACE utilisateur typeahead match sur les personnages principaux
La typeahead fonctionnalité dans AngularJs UI semble simple et puissant toutefois, j'ai été à essayer de comprendre comment obtenir la correspondance à faire sur les personnages principaux. Par exemple, si je tape " A "dans la zone d'entrée, je voudrais voir tous les états qui commencent par "A" et pas tous les états qui contiennent un " A " dans le nom. J'ai été à la recherche pour un couple de jours et il semble que Angulaire est le concept d'un filtre personnalisé qui a un 'comparateur'. Les docs sur ce simple exemple qui ne montre pas la syntaxe exacte pour la mise en œuvre d'un comparateur.
Le code html ressemble à ceci:
<div>Selected: <span>{{selected}}</span></div>
<div><input type="text" ng-model="selected" typeahead="name for name in states | filter:selected"></div>
Le code javascript de base ressemble à ceci
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'];
}
J'ai un plunker ici http://plnkr.co/edit/LT6pAnS8asnpFEd5e6Ri
La difficulté consiste donc en un mot est d'obtenir le AngularUI typeahead pour correspondre uniquement sur les personnages principaux.
De l'aide ou des idées sur ce serait très apprécié.
Vous devez vous connecter pour publier un commentaire.
À la fin de la journée, votre question n'est pas vraiment spécifique à la
typeahead
directive, mais il a plus à voir avec la façon dont AngularJS les filtres de travail.Avant de présenter une solution de travail veuillez noter que le
typeahead
directive fait un usage intensif de AngularJS infrastructure ($http, des promesses) et l'expression de la langue. Donc, il est important de réaliser que lastates | filter:selected
n'est rien de plus qu'un AngularJS expression.Avoir un coup d'oeil à l'expression ci-dessus, nous avons besoin de trouver un moyen de de filtrage d'un tableau pour retourner une liste d'éléments correspondants. La seule chose de spécial à propos de la typeahead directive est qu'il y a un
$viewValue
variable représentant une valeur saisie par l'utilisateur dans la zone de saisie. Nous avons donc fondamentalement juste besoin de filtrer lesstates
tableau à retourner les articles en commençant par le$viewValue
.Il existe de nombreuses façons de le faire, mais puisque vous avez mentionné le comparateur de filtres (veuillez noter que les personnes n'ont été introduites dans 1.1.x version d'AngularJS), vous devez définir un comparateur de fonction qui doit décider si un article doit être retourné dans la liste de résultats ou pas. Une telle fonction pourrait se présenter comme suit:
Avoir défini l'utilisation est très simple:
Ici est le travail plunk: http://plnkr.co/edit/WWWEwU4oPxvbN84fmAl0?p=preview
Filtre personnalisé pour obtenir la correspondance à faire sur les personnages principaux dans typehead l'auto-remplissage de la boîte.
JS:
HTML:
J'ai juste édité le post marqué comme réponse et il fonctionne lorsque la liste est d'avoir l'Id et le titre à la fois:
et en js :