2012-06-24 11 views
10

Tengo un widget de Dojo que estoy escribiendo que agrega una etiqueta y un cuadro de entrada a la página del usuario.¿Cómo creo ID únicos en una plantilla de widget de Dojo?

El atributo for de label requiere un valor de ID de HTML, pero un widget de Dojo no debe contener ID en caso de que se creen varias instancias en la misma página.

Entonces, ¿alguien tiene alguna sugerencia sobre cómo solucionar estas necesidades conflictivas?

Respuesta

19

fuera de la caja, así es como el registro dijit establece moduloid (this.id) si el parámetro de configuración no está presente durante la construcción:

constructor: function(args) { args=args || {}; 
    this.id = args.id || dijit.registry.getUniqueId(this.declaredClass) 
} 

trabaja con plantillas de reemplazo de cadena, así que si usted tiene una propiedad en su clase, por ejemplo foo , la manera de incluir este en la plantilla es como tal:

templateString = '<div class="${foo}">'; 

en su caso, en alguna parte de la plantilla que tiene al Abel-> par de entrada, que es la siguiente

<div><!--domNode--> 
    <table> 
     <td><label for="${id}-edit-title">Title</label></td> 
     <td><input id="${id}-edit-title" type="text" /></td> 
    </table> 
</div> 

Así

Acabase es un poco anticuado por ser el tiempo, este es un muy buen punto de partida: http://dojotoolkit.org/documentation/tutorials/1.6/templated/

Sigue leyendo en el dojo.Stateful get/set mecanismo

Finalmente, pase al dijit._WidgetsInTemplateMixin.

+1

solo un aviso: parece que hacer referencia al $ {id} en la plantilla es todo lo que hay que hacer. Sin código adicional en ninguno de los métodos del ciclo de vida del widget. – belzebu

+0

como dije, 'fuera de la caja' :) primer bloque de código es lo que dijit.widget establece id para que automáticamente – mschr

Cuestiones relacionadas