使用onShow和onLoad为dijit.layout.ContentPane创建了编程

nor*_*oru 5 javascript dojo

我有一个ContentPane创建声明和编程.

声明:

<div dojoType="dijit.layout.ContentPane" id="abccp" href="abc.php?id=1" title="abc" onShow="do_abc()">
Run Code Online (Sandbox Code Playgroud)

编程

var obj_abc;
var abchref= "abc.php?id=1";
obj_abc = new dijit.layout.ContentPane({id:'abccp',title:'abc', href:abchref});
Run Code Online (Sandbox Code Playgroud)

如何在程序化的ex中调用do_abc()

Ken*_*iro 8

为了在技术上等同于你的第一个例子,你只需要包含onShow: do_abc在传递给ContentPane的构造函数的arguments对象中.(注意之后没有括号do_abc- 我们对函数对象本身感兴趣,而不是调用它的结果!)

但是,如果您想以更具可扩展性的方式进行,那么我建议这样做:

obj_abc = new dijit.layout.ContentPane(...);
obj_abc.connect(obj_abc, 'onShow', do_abc);
Run Code Online (Sandbox Code Playgroud)

这样做是执行转播,使得每当obj_abconShow方法被调用,该do_abc函数将被依次调用(虽然背景下obj_abc,这大概是你想要什么反正).您还可以获得以下额外奖励:

  • 它不再破坏可能最初存在于该方法中的任何默认功能(尽管在这种情况下,onShow是一个存储器意味着可以破坏)
  • 您可以通过onShow这种方式连接任意数量的功能
  • 当窗口小部件被销毁时,连接将自动拆除(而不是dojo.connect手动拆除).

欲获得更多信息: