2011-10-13 2 views
8

Dojoには新しく、いくつかのUIを作成しようとしていますが、プログラマチックな方法のみを使用しています。プログラムでDojo dijitフォームを作成する方法

Dojo dijit.form.Formを使用してプログラマチックにフォームを作成する方法の例を私に示すことができたら幸いです。私はいくつかの例を探してきましたが、私が見つけることができるのはそれの宣言的な方法です。

答えて

8

よりオブジェクト指向のソリューション:

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); 
     } 
    }); 
} 
); 

ちょうどあなたがウィジェットを期待するかもしれない任意の場所でnew mypackage.MyForm({})をドロップします。

+1

クイックコメント:代わりにコンストラクタで定義された変数としてsubmitButtonとtextareaを使用しないでください。彼らはオブジェクトです、そして、彼らはこの方法でプロトタイプになるでしょう...私はそれが推奨されないと思います! – Merc

+0

あなたはフィドルを含めることができますか? safeMixinは何をしますか?ありがとう! – streetlight

6

かなり簡単です。フォームのすべての部分を作成し、すべての部分をそれぞれの親に追加します。以下のように、でそれを配置するフォームオブジェクトを作成し、任意のdijitのオブジェクトと同様に、あなたは、コンストラクタにのparamオブジェクトを渡し、そしてDOMNODEするには、そう:

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

フル例はhereです。 paramsオブジェクトに追加できるプロパティを調べるには、API Docsを参照してください。いずれのプロパティもparamリストに追加できます。

+0

ありがとうございました – Jmsegrev

関連する問題