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

时间:2011-01-07 15:04:17

标签: javascript dojo

我有一个ContentPane创建了声明式和编程式。

声明:

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

编程

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

如何在程序化前的

中调用do_abc()

1 个答案:

答案 0 :(得分:8)

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

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

obj_abc = new dijit.layout.ContentPane(...);
obj_abc.connect(obj_abc, 'onShow', do_abc);

这样做是为了执行一个连接,这样每当调用obj_abc的{​​{1}}方法时,onShow函数将被调用(尽管在{{1}的上下文中无论如何,这大概都是你想要的)。您还可以获得以下额外奖金:

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

了解更多信息: