Comment définir une valeur sélectionnée dans une liste déroulante à l'aide de Mustache.js?
Est-il possible de faire cela avec Mustache.js?
var data = {"val":"3"},
template = '<select>' +
'<option value="1">1</option>' +
'<option value="2">2</option>' +
'<option value="3">3</option>' +
'</select>';
var html = Mustache.to_html(template, data);
$(html).appendTo('body');
Vous devez vous connecter pour publier un commentaire.
La
val
attribut ne fonctionne pas, car un<select>
prend sa valeur à partir de la<option>
s qui ont leselected
attribut. Je ne suis pas très familier avec la Moustache, mais ce devrait travail:Je pense que le modèle que vous utilisez n'est pas idiomatique Moustache — c'est trop gros grains; vous n'êtes pas vraiment de template quoi que ce soit. Quelque chose comme cela pourrait être plus Moustache-y:
Démo →
"options":["val1", "val2"]
si vous ne souhaitez pas modifier le tableau ou l'arborescence DOM ensuite, vous pouvez utiliser une fonction:
#
de la{{#selected}}
partie variable dans le modèle, ou qu'il va jeter un "ouvrez la section" erreur.selvar
, mais ensuite, dans laselected
fonction, vous faites référence à elle commeselval
. Aussi, pour moi, le problème, c'est quandselval
est variable, pas "statique" comme dans votre exemple. Je veux dire, quand il est dans ladata
objet. Et, en outre, il est un tableau (pensez à unmultiple
sélectionner).selected
être un attribut de ladata
objet plutôt que d'un élément deoptions
?J'ai peu de retard, je sais, seulement pour l'avenir, référence:
- Je utiliser ce hack pour faire simple:
De cette façon, vous pouvez transformer ce type de données:
Avec ce genre de Moustache Modèle:
Comme ceci:
Encore vraiment facile à lire! Le seul inconvénient est que vous ne pouvez pas avoir un '.' dans vos valeurs.