Dojo事件未触发

h9a6wy2h  于 2022-12-16  发布在  Dojo
关注(0)|答案(3)|浏览(213)

我有一个Dojo标签容器,当我单击某些按钮时,会动态添加一个新的标签,其内容通过 AJAX 下载。标签包含动态表单元素,Dojo可以很好地解析和加载这些元素。我还包含了特定于每个标签的Javascript块,这些块也可以通过Ajax下载......但是,没有一个Javascript块可以执行!
选项卡内容示例:

<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块,这不工作,根据第一个例子...没有等效的widget onLoad事件,所以我也不能使用第二个方法......有什么想法如何去做呢?

ilmyapht

ilmyapht1#

“tab content”实际上是一个 * ContentPane * 元素,除非使用<script type="dojo/method">,否则不能在内容窗格中调用javascript,至少我知道这一点。

**更新:**如果你使用dojox.layout.ContentPane而不是dijit.layout.ContentPane,那么所有关于js的问题都会消失。

contenPane是dijit. layout. contentPane的扩展,提供脚本执行等功能。

50few1ms

50few1ms2#

看起来你需要使用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

0lvr5msh

0lvr5msh3#

你必须确保小部件已经被解析过了。你可以这样做:

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

相关问题