Javascript 对dijit.layout.ContentPane使用onShow和onLoad以编程方式创建

Javascript 对dijit.layout.ContentPane使用onShow和onLoad以编程方式创建,javascript,dojo,Javascript,Dojo,我创建了一个ContentPane,既有声明性的,也有编程性的 声明性: <div dojoType="dijit.layout.ContentPane" id="abccp" href="abc.php?id=1" title="abc" onShow="do_abc()"> 我如何在编程ex中调用do_abc(),以便在技术上等同于您的第一个示例,您只需在传递给ContentPane构造函数的arguments对象中包含onShow:do_abc。(注意,do_abc后面没有括

我创建了一个ContentPane,既有声明性的,也有编程性的

声明性:

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

我如何在编程ex中调用do_abc(),以便在技术上等同于您的第一个示例,您只需在传递给ContentPane构造函数的arguments对象中包含
onShow:do_abc
。(注意,
do_abc
后面没有括号-我们感兴趣的是函数对象本身,而不是调用它的结果!)

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

obj_abc = new dijit.layout.ContentPane(...);
obj_abc.connect(obj_abc, 'onShow', do_abc);
这样做的目的是执行一个连接,这样每当调用
obj_abc
onShow
方法时,就会依次调用
do_abc
函数(尽管在
obj_abc
的上下文中,这可能是您想要的)。您还可以获得以下额外奖金:

  • 它不再破坏方法中最初可能存在的任何默认功能(尽管在本例中,
    onShow
    是一个可以破坏的存根)
  • 您可以通过这种方式将任意数量的函数连接到
    onShow
  • 当小部件被销毁时,连接将自动断开(与您必须手动断开的
    dojo.connect
    相反)
有关更多信息:


你好,肯,我有一些道场的问题,你能检查一下吗:
obj_abc = new dijit.layout.ContentPane(...);
obj_abc.connect(obj_abc, 'onShow', do_abc);