Comment obtenir de l'option de menu sélectionnée à partir d'un knockout.js observableArray?
J'ai l'impression que je suis absent quelque chose de très basique, mais je ne peux pas obtenir un menu déroulant pour le travail que j'attends de l'aide de Knockout.js.
J'ai un ensemble d'objets que je veux présenter dans un menu, et j'ai besoin de trouver l'option sélectionnée et post que pour le serveur. Je peux obtenir le menu à rendre, mais ne semble pas possible d'obtenir la valeur de l'élément sélectionné. Mon point de vue, le modèle ressemble à ceci:
function ProjectFilterItem( name, id ) {
this.Name = name;
this.Id = id;
}
function FilterViewModel() {
this.projectFilters = ko.observableArray([
new ProjectFilterItem( "foo", "1" ),
new ProjectFilterItem( "bar", "2" ),
new ProjectFilterItem( "baz", "3" )
]);
this.selectedProject = ko.observable();
}
ko.applyBindings( new FilterViewModel() );
et de mon point de vue balisage ressemble à ceci:
<select
id = "projectMenu"
name = "projectMenu"
data-bind = "
options: projectFilters,
optionsText: 'Name', /* I have to enquote the value or I get a JS error */
optionsValue: 'Id', /* If I put 'selectedProject here, nothing is echoed in the span below */
optionsCaption: '-- Select Project --'
"
></select>
<b>Selected Project:</b> <span data-bind="text: selectedProject"></span>
Comment obtenir l'élément de menu sélectionné pour l'affichage dans la durée, et à poster sur le serveur? (Je suppose que les observables de rendre dans la durée est la même que j'ai poster.) Ai-je besoin d'une autre propriété dans le ProjectFilterItem
, comme this.selected = ko.observable(false);
? Si oui, comment pourrais-je le déclarer en tant que cible de la valeur?
OriginalL'auteur Val | 2012-11-05
Vous devez vous connecter pour publier un commentaire.
Vous avez juste besoin de les utiliser avec la
value
de liaison de lier la valeur sélectionnée:De la
options
de la documentation:Dans votre exemple:
Voir Démo.
Merci pour la démo, ça m'a beaucoup aidé!
OriginalL'auteur nemesv