einzigartige Gegenstände aus einer observableArray von Objekt-Eigenschaften
Ich versuche zu extrahieren einzigartigen Eigenschaften von einer knockout.js observableArray von Objekten, zum füllen eines Dropdown-Menü. Neues knockout, ich bin wirklich mit diesen zu kämpfen!
Ich soll zum Durchlaufen einer Kontakte-Liste, und füllen Sie eine Dropdown-Menü mit einem einzigartigen Wert jeder einzelnen person-Objekt innerhalb der observableArray. Also in meinem code-Beispiel unten möchte ich füllen, mein Dropdown-Menü mit einer Liste von Personen, die 'type' - Familie, Freund etc.
Suche auf Google, fand ich eine ähnliche Funktion, aber keine Ergebnisse zurück, selbst wenn ich die Konsole.die Ergebnisse protokollieren?
//dummy data more rows in actual code...
var people = [
{ name: "Contact 1", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "[email protected]", type: "family" },
{ name: "Contact 2", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "[email protected]", type: "friend" }
];
function ContactsViewModel(people) {
var self = this;
self.contacts = ko.observableArray(people);
self.uniqueSelect = ko.dependentObservable(function() {
return( ko.utils.arrayGetDistinctValues(self.contacts().type).sort());
}, self);
};
ko.applyBindings(new ContactsViewModel(people));
- Und HTML-Vorlage
<p>Show me: <select data-bind="options: ContactsViewModel.uniqueSelect"></select></p>
Jede Hilfe dankbar, so ein noob bin ich verloren! Dank
- doppelte + bessere Antwort: stackoverflow.com/questions/14437849/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden solche Konstruktionen
self.contacts().type
. Sie sollten array von Typen zunächst und rufen Sie dannDistinct
Funktion:Hier arbeitet fiddle: http://jsfiddle.net/VxT5Y/