2013-02-21 43 views
7

我一直在試圖弄清楚如何使用Dojo 1.7創建和顯示對話框內的表單。如何以編程方式在Dijit對話框中創建和顯示錶單?

我希望我的對話框看起來像這樣:當你創建一個對話框使用AMD

+1

談到對話和Dojo,你可以考慮讀我的答案爲[爲道場MVC簡單登錄的實現(HTTP:// stackoverflow.com/questions/10984855/simple-login-implementation-for-dojo-mvc/11017097#11017097)和[帶確認按鈕的Dojo對話框](http://stackoverflow.com/questions/10401512/dojo-dialog-with -confirmation按鈕/ 10405938#10405938)。 – phusick 2013-02-21 15:40:59

回答

17

enter image description here

所有的我都不要使用標記它看到的樣品,但沒有,你可以使用小部件(例如表單)作爲內容。因此,舉例來說,你可以這樣做:

require([ 
    "dijit/Dialog", 
    "dijit/form/Form", 
    "dijit/form/TextBox", 
    "dijit/form/Button", 
    "dojo/domReady!" 
], function(Dialog, Form, TextBox, Button) 
{ 
    var form = new Form(); 

    new TextBox({ 
     placeHolder: "Name" 
    }).placeAt(form.containerNode); 

    new Button({ 
     label: "OK" 
    }).placeAt(form.containerNode); 

    var dia = new Dialog({ 
     content: form, 
     title: "Dialog with form", 
     style: "width: 300px; height: 300px;" 
    }); 
    form.startup(); 
    dia.show(); 
});//~require 

require()由道場提供。它加載依賴關係(表單,對話框等),然後運行創建窗口小部件的給定函數。但是,因爲我們在依賴項中包含domReady!,Dojo會確保DOM完全加載並且首先準備就緒。

因爲我在該函數中也有dia.show(),所以只要頁面打開,對話框就會顯示。比方說,你想顯示在對話框的頁面上的一些按鈕被點擊時代替:

require([ 
    "dijit/Dialog", 
    "dijit/form/Form", 
    "dijit/form/TextBox", 
    "dijit/form/Button", 
    "dojo/on",  // Added this! 
    "dojo/domReady!" 
], function(Dialog, Form, TextBox, Button, onEvent) 
{ 
    // ... as above, we create the dialog and form when the page loads 
    // but it remains hidden until we call dia.show() ... 
    form.startup(); 
    // dia.show(); Commented out this! 

    onEvent(document.getElementById("someButtonOnYourPage"), "click", 
     function() 
     { 
      dia.show(); 
     }); 
});//~require 
+0

不好意思的問題,但我怎麼稱呼這個功能? – 2013-02-21 11:19:06

+0

@DevdattaTengshe我更新了答案。當頁面加載時,您通常會調用require,即使您不想在稍後顯示對話框(但您當然不需要)。 – Frode 2013-02-21 11:40:22

相關問題