2010-10-02 2 views
0

J'ai un widget personnalisé qui a un volet de contenu (entre autres choses). Dans celui-ci j'ai une liste de sélection multisélect. J'ai affecté un dojoAttachPoint à la liste.Dojo PostCreate numéro

Je veux remplir la liste lorsque le widget est créé.

En postCreate j'essaie de remplir la zone de liste avec des objets, mais la référence à this.selectFrom (qui est le dojoAttachPoint) est nulle.

Pourquoi cela ne serait-il pas disponible dans postCreate? Des solutions de contournement?

Merci à l'avance

HTML:

<div dojoType='dijit.layout.ContentPane'> 
    <select name="drop1" style='width:200px;' 
     id="selectTo" dojoAttachPoint='selectTo' 
     size="10" multiple="multiple"> 
    <option value="1">second col</option> 
    <option value="2">option two</option> 
    </select> 
</div> 

JS:

postCreate: function(){ 
    this.inherited (arguments); 
    var newOption = document.createElement('option'); 
    text = 'Mark Brown'; 
    value = '1'; 
    selectTo.options [this.selectTo.options.length] = new Option (name,value); 
} 

this.selectTo est null et il ne devrait pas être.

Merci

+0

Difficile d'aider sans un fragment de code. Pour autant que je sache, ce que vous décrivez fonctionne pour moi ... http://jsfiddle.net/fAZGF/ –

+0

Votre extrait de code semble avoir été tronqué. Pouvez-vous vous assurer que votre templateString (ou un modèle HTML séparé) est visible dans celui-ci? Quelque chose que nous pouvons brancher et exécuter pour dépanner serait encore mieux. –

+0

pour une raison quelconque, il ne montre pas le modèle. Quoi qu'il en soit, j'ai résolu le problème. C'etait mon erreur. la référence à this.selectTo (qui était null) était à l'intérieur d'une fonction anonyme qui a essentiellement l'appel xhr à mon service Web pour obtenir la liste des utilisateurs et remplir la liste. Puisque j'utilisais 'ceci' à l'intérieur de la fonction anonyme, il est apparu comme nul. Erreur commune. J'ai donc sauvegardé une référence à 'ceci' à l'intérieur de postCreate(), var _this = this et utilisé _this.selectTo insead et ça marche bien. Merci à tous pour votre aide. – Mark

Répondre

1

Je pense que dojoAttachPoint n'a de sens que dans les modèles (voir dijit._Templated) Les modèles sont des chaînes séparées/fichiers qui sont utilisés pour composer des widgets et ne sont généralement pas utilisés en ligne dans la page.

+0

oui, correct, et j'ai eu mon propre modèle. – Mark