2011-08-19 102 views
1

我有一個Dojo選項卡容器,當我點擊某些按鈕時,動態添加一個新選項卡,其內容通過Ajax下載。這些選項卡包含動態表單元素,這些元素由Dojo解析並加載得很好。我還包括特定於每個選項卡的Javascript塊以及通過Ajax下載的Javascript塊...但是,沒有一個Javascript塊執行!的標籤內容Dojo事件不觸發

例子:

<input id="test" name="test" type="text" dojoType="dijit.form.ValidationTextBox" /> 

<script type="text/javascript"> 
    dojo.connect(dijit.byId('test'), 'onClick', function(evt){ 
     alert('testing 123'); 
    }); 
</script> 

但是,如果我這樣做,而不是事件觸發就好:

<input id="test" name="test" type="text" dojoType="dijit.form.ValidationTextBox"> 
    <script type="dojo/method" event='onClick'> 
     alert('testing 123'); 
    </script> 
</input> 

我的問題是,爲什麼在第一個例子中沒有JavaScript代碼段工作?這是一個Dojo限制嗎?另外,我還試圖在加載後的小部件屬性和值。我如何激活,因爲我不得不使用dojo.addOnLoad()這樣的東西,因爲它需要一個Javascript塊,並且不會按照第一個例子工作,所以不起作用......沒有等效的小部件onLoad事件我不能使用第二種方法...任何想法如何去做到這一點?

回答

2

的「標籤內容」,實際上是內容窗格元素。除非使用<script type="dojo/method">,否則不能在內容窗格中調用JavaScript。至少這是我所知道的。

更新: ifyou'll使用dojox.layout.ContentPane而不是把它裏面的JS會消失的dijit.layout.ContentPane所有問題。來自Dojo參考指南:

dojox.layout.ContenPane是提供腳本執行等的dijit.layout.ContentPane的擴展。

0

它看起來像你需要使用dojo.hitch,以便您的函數實際調用時將在範圍內。嘗試使用:

dojo.connect(dijit.byId('test'), 'onCLick', dojo.hitch(this, function(evt) { 
     alert('testing123'); 
})); 

你可以閱讀更多關於它在這裏:http://dojotoolkit.org/reference-guide/dojo/hitch.html#dojo-hitch

+0

不,不起作用。警報從不出現。 – Ayyoudy

0

你必須確保窗口​​小部件已首先被解析。做到這一點,像這樣:

dojo.addOnLoad(function(){/*connect code*/});