2013-02-21 24 views
7

Próbuję dowiedzieć się, jak utworzyć i wyświetlić formularz wewnątrz okna dialogowego przy użyciu przystawki Dojo 1.7.Jak programowo wyświetlić i wyświetlić formularz w oknie dialogowym Dijit?

chcę mój dialogowe wyglądać mniej więcej tak:

enter image description here

wszystkich próbek Widziałem zrób to za pomocą znaczników, ale żaden z użyciem AMD

+1

Mówiąc o oknach i Dojo, można rozważyć czytając moje odpowiedzi na [prosta implementacja logowania dla Dojo MVC] (http: // stackoverflow.com/questions/10984855/simple-login-implementation-for-dojo-mvc/11017097#11017097) i [Dojo Dialog z przyciskiem potwierdzenia] (http://stackoverflow.com/questions/10401512/dojo-dialog-with -confirmation-button/10405938 # 10405938). – phusick

Odpowiedz

17

Podczas tworzenia okna dialogowego, można użyj widgetu (np. formularza) jako treści. Możesz na przykład:

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() jest dostarczany przez Dojo. Ładuje zależności (formularz, okno dialogowe itp.), A następnie uruchamia daną funkcję, która tworzy widżety. Jednakże, ponieważ uwzględniliśmy domReady! wśród zależności, Dojo upewnia się, że DOM jest w pełni załadowany i gotowy jako pierwszy.

Ponieważ w tej funkcji również mam dia.show(), okno dialogowe będzie wyświetlane zaraz po otwarciu strony. Powiedzmy, że chciał pokazać okno kiedy jakiś przycisk na swojej stronie kliknięciu zamiast:

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

Przepraszam za nieobyczajne pytanie, ale jak nazwałbym tę funkcję? –

+0

@DevdattaTengshe Zaktualizowałem odpowiedź. Zwykle wywołujesz wymaganie, gdy strona ładuje się, nawet jeśli nie chcesz, aby dialog wyświetlał się później (ale oczywiście nie musisz). – Frode

Powiązane problemy