2011-08-19 80 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*/});