Dojo remplir la boîte combo widget de façon dynamique
Quelqu'un pourrait-il m'expliquer pourquoi ce simple code ne fonctionne pas,
var serviceStore = new dojo.data.ItemFileWriteStore({
data: {identifier: "serviceCode",items:[]}
});
//jsonObj is a json object that I obtain from the server via AJAX
for(var i = 0; i<jsonObj.length;i++){
serviceStore.newItem({serviceCode: jsonObj[i]});
}
var serviceFilterSelect = dojo.byId('serviceSelect');
serviceFilterSelect.store = serviceStore;
Il n'y a pas d'erreur affichée, mais mon combobox avec l'id "serviceSelect" ne pas afficher toutes les options, le combo est déclarée dans la section html de mon code,
<input dojoType = "dijit.form.ComboBox" id="serviceSelect"></input>
Tous les pointeurs vers la bonne direction sera apprécié.
OriginalL'auteur Lawrence Osheng | 2011-05-04
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devez utiliser bibliothèque dijit.byId pour obtenir widget dojo au lieu de dojo.byId.
Aussi, chaque élément dans jsonObj devrait contient le champ "nom". Ce champ sera affiché dans la zone de liste déroulante. E. g:
Et HTML:
Il semble que il fonctionne.
serviceFilterSelect.attr - il n'est pas déconseillée fonction. "TypeError: serviceFilterSelect.attr n'est pas une fonction" cette erreur se produit parce que vous utilisez dojo.byId. dojo.byId retourne nœud DOM et, bien sûr, nœud DOM n'a pas cette fonction. Vous devez utiliser bibliothèque dijit.byId - elle renvoie un objet JavaScript qui est l'instance du widget et il a ".attr" de la fonction.
Vous devriez vérifier la mise en jachère choses: 1.Chemins: faire toutes les ressources de corriger les url et les charger? Essayez de charger dojo de google code: <script src="ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js" djconfig="parseOnLoad: true"></script>. 2. parseOnLoad: Par défaut, l'analyseur n'est pas chargé et ne fonctionne pas, donc si votre déclarative widget, il ne va pas être instanciée, sauf si vous avez défini dojo.config.parseOnLoad de vrai.
Merci beaucoup pour l'aide, je suis à l'aide de spring roo qui vient avec dojo dans le cadre de plusieurs outils intégrés à celui-ci et un coup d'œil à la générées dans le navigateur, je vois "djconfig="parseOnLoad: false," je pense que cela explique la plupart des questions que j'ai pu avoir avec dojo, merci beaucoup pour les pointeurs. Ensuite, je vais devoir trouver comment configurer le dojo qui vient avec spring roo 🙂
En fait je suis tombé sur ce, elle a permis de dégager un grand nombre de choses, forum.springsource.org/archive/index.php/t-103331.html
OriginalL'auteur Andrei
Je ne peux pas dire à partir du code que vous avez posté, mais si vous éprouvez des difficultés à obtenir les nœuds DOM, ils n'ont pas eu une chance de se charger.
Vous pouvez essayer d'emballage ce que vous avez ci-dessus avec un
dojo.ready(function(){ ... });
.OriginalL'auteur Len Grant
Avez-vous mis des articles dans votre magasin? Je ne peux pas dire à partir de l'échantillon que vous avez posté.
OriginalL'auteur Richard Ayotte
Pour dojo >= 1.6:
Pour dojo < 1.6:
OriginalL'auteur user4680087