2011-10-13 8 views
8

Im nuevo en Dojo y estoy tratando de hacer algunos ui, pero solo utilizando la forma programática.Cómo hacer un Dojo dijit forma programáticamente

Me gustaría que alguien me muestre un ejemplo de cómo hacer un formulario de forma programática utilizando Dojo dijit.form.Form. He estado buscando algún ejemplo, pero todo lo que puedo encontrar es su forma declarativa.

Respuesta

8

Una solución más orientada a objetos:

define([ 
"dojo/_base/declare", 
"dijit/form/Form", 
"dijit/form/Textarea", 
"dijit/form/Button" 
], 

function(declare, Form, TextArea, Button) { 
    return declare("mypackage.MyForm", Form, { 
     textarea: new TextArea({}), 

     submitButton: new Button({ 
      type: "submit", 
      label: "ready!" 
     }), 

     constructor: function(args) { 
      declare.safeMixin(this, args); 
     }, 

     onSubmit: function() { 
      alert(this.textarea.get('value')); 
     }, 

     postCreate: function() { 
      this.domNode.appendChild(this.textarea.domNode); 
      this.domNode.appendChild(this.submitButton.domNode); 
     } 
    }); 
} 
); 

tan sólo reduce un new mypackage.MyForm({}) en cualquier lugar que se podría esperar de un widget.

+1

Comentario rápido: ¿no deberías tener submitButton y textarea como variables definidas en el constructor? Son objetos, y terminarán en el prototipo de esta manera ... ¡lo que creo que no es recomendable! – Merc

+0

¿Podría incluir un violín? ¿Qué hace SafeMixin? ¡Gracias! – streetlight

6

Es bastante sencillo. Simplemente crea todas las piezas del formulario y luego agrega todas las piezas a sus respectivos padres. Para crear los objetos de formulario, como cualquier otro objeto dijit, se pasa al constructor un parámetro objeto , y una DOMNode a colocarlo en, así:

var resetbtn = new dijit.form.Button({ 
    type: 'reset', 
    label: 'Reset' 
}, dojo.doc.createElement('button')); 

El ejemplo completo es here. Para saber qué propiedades se pueden agregar al objeto params, consulte API Docs. Cualquiera de las propiedades se puede agregar a la lista de param.

+0

Gracias, esto fue útil – Jmsegrev

Cuestiones relacionadas