2011-01-07 57 views
5

我有一个ContentPane创建了声明式和编程式。使用onShow和onLoad创建dijit.layout.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()在编程前

回答

8

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

但是,如果您希望以更时尚的方式进行扩展,那么我倒是建议做这样的:

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

这样做什么是执行转播,使得每当obj_abc“在obj_abc的背景下,S onShow方法被调用时,do_abc功能将依次调用(虽然这大概是你想要的东西)。您还可以得到以下补充奖金:

  • 它不再则会覆盖,可能是原来的方法存在(尽管在这种情况下,onShow是意味着要揍,能够存根)
  • 你任何默认功能可以通过这种方式将任意数量的功能连接到onShow
  • 当部件被销毁时,连接将自动拆除(而不是dojo.connect,您必须手动拆除)。

欲了解更多信息:

+0

非常感谢你,它的工作! – noru 2011-01-10 06:37:41