2011-07-07 22 views
0

所以我的第一個,雖然是,這增加了更多和更多的HTML元素是不長的路要走,我想出了這個解決方案如何以編程方式添加和使用元素(對話框,在這種情況下)

var Jaxi = { 
     CurrentLocation: '/', 
     showLoginDialog: function() { 
     dojo.place('<div data-dojo-type="dijit.Dialog" style="width:600px;" id="loginDialog"><div id="dialog-content"></div><a href="javascript:Jaxi.CloseDialog()">Close</div>', dojo.body()) 
      dojo.xhrGet({ 
       url: "/Account/SingIn?ReturnUrl=" + Jaxi.CurrentLocation, 
       load: function (result) { 
        dojo.byId("dialog-content").innerHTML = result; 
       } 
      }); 
      dojo.ready(function() { 
       dijit.byId("loginDialog").show(); 
      }); 
     }, 
     CloseDialog: function() { 
      dijit.byId("loginDialog").hide(); 
      dojo.destroy("loginDialog"); 
     } 
    }; 

它的工作..至少在某種程度上。對話框打開,但沒有樣式被添加。但是,我無法關閉對話框。 問題是如何使它工作?

回答

2

將div放入正文後,Dojo需要解析HTML以「注意」新小部件。當它注意到屬性時,它說:「嘿,這是一個小部件,我需要將它變成一個美麗的對話框。」

showLoginDialog: function() { 
    dojo.place('<div data-dojo-type="dijit.Dialog" ....</div>', dojo.body()); 
    dojo.parser.parse(); 
    .... 

當然,你也必須確保你的身體標記有class="claro"(或您要使用的任何其他主題)。

這就是說,我個人認爲這是一個有點混亂的方式來做一個對話框。你有點像編程式的聲明式混合。我不確定你的意思是什麼「我的第一個雖然是,添加更多,和更多的HTML元素是不是一種方式去」,但我個人認爲混合HTML內的JavaScript使代碼難以閱讀。如果你想要一個乾淨的方式來分離HTML和Javascript,你可能想看看this sitepen article

相關問題