Die Sache über die typeahead
Richtlinie von http://angular-ui.github.io/bootstrap/ NTICE ist, die Syntax von den select directive von AngularJS verwendet zu imitieren versucht. Dies bedeutet, dass alle Ausdrücke, die für die Auswahl eines zu bindenden Modells und einer Beschriftung verwendet werden, AngularJS expressions sind. Dies wiederum bedeutet, dass Sie mit jedem beliebigen AngularJS-Ausdruck den Text Ihres Etiketts berechnen können.
Zum Beispiel Ihren gewünschten Text angezeigt werden könnten Sie schreiben:
typeahead="item as item.title + ' (' + item.type + ')' for item in titles | filter:{title:$viewValue}"
Vorausgesetzt, dass Ihr Datenmodell sieht wie folgt:
$scope.titles = [
{title: 'Amazing Grace', type: 'movie'},
{title: 'Amazing Grace', type: 'song'}
];
Arbeiten hier zupfen: http://plnkr.co/edit/VemNkVnVtnaRYaRVk5rX?p=preview
Schreiben komplexe Ausdrücke für ein Label im typeahead
-Attribut können hässlich werden, aber nichts hindert Sie daran, das Label zu verschieben Berechnungslogik auf eine Funktion auf einem Umfang ausgesetzt, ex .:
typeahead="item as label(item) for item in titles | filter:{title:$viewValue}"
wo die label
eine Funktion auf einem Umfang ausgesetzt ist:
$scope.label = function(item) {
return item.title + ' (' + item.type + ')';
};
andere zupfen: http://plnkr.co/edit/ftKZ96UrVfyIg6Enp7Cy?p=preview
Soweit Ihre Frage bezüglich der Symbole gehen - Sie könnten HTML in die Label-Ausdrücke einbetten, aber dies wird schrecklich zu schreiben und zu pflegen. Glücklicherweise ist die typeahead-Richtlinie können Sie eine benutzerdefinierte Vorlage für Ihre angepassten Element zur Verfügung zu stellen, etwa so:
typeahead-template-url="itemTpl.html"
In der benutzerdefinierten Vorlage Sie Ausdrücke oder AngularJS verwenden können Direktive Sie möchten. Hinzufügen von Symbolen mit einer wenig Hilfe von der ngClass
Richtlinie trivial:
<script type="text/ng-template" id="itemTpl.html">
<a tabindex="-1">
<i ng-class="'icon-'+match.model.type"></i>
<span ng-bind-html-unsafe="match.model.title | typeaheadHighlight:query"></span>
</a>
</script>
und das Arbeits zupfen: http://plnkr.co/edit/me20JzvukYbK0WGy6fn4?p=preview
Recht ordentlich wenig Richtlinie ist es nicht?
http://Stackoverflow.com/a/18028408/304319, und werfen Sie einen Blick auf diese Demo http://jsfiddle.net/ZKqQM/9/ – zsong
@sza danke für den Tipp. Ich hätte diese Frage angesichts ihres Titels nie gefunden und weiß, dass ich bereits über die Objektiteration in typeahead weiß, und nicht, wie ich sie anzeigen soll. Prost – MFB