des objets uniques à partir d'un observableArray de propriétés de l'objet
Je suis d'essayer d'extraire des propriétés uniques à partir d'un knockout.js observableArray des objets, pour remplir un menu déroulant. Étant nouveau knock-out, j'ai vraiment du mal avec cette!
Je veux itérer sur une liste de contacts, et de remplir un menu déroulant avec une valeur unique de chaque personne, de l'objet au sein de la observableArray. Donc, dans mon exemple de code ci-dessous, je veux remplir mon menu déroulant avec une liste de personnes "type" de la famille, ami, etc.
Cherche sur Google, j'ai trouvé une fonction similaire, mais elle ne retourne aucune valeur, même si j'ai de la console.consigner les résultats?
//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));
Et le modèle HTML
<p>Show me: <select data-bind="options: ContactsViewModel.uniqueSelect"></select></p>
Toute aide appréciée, comme un noob, je suis perdu! Grâce
OriginalL'auteur Joe | 2012-11-13
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser de telles constructions
self.contacts().type
. Vous devriez obtenir un tableau de types en premier et ensuite appelerDistinct
fonction:Voici de travail violon: http://jsfiddle.net/VxT5Y/
OriginalL'auteur Artem Vyshniakov