我有一个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});

如何在程序化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_abconShow方法时,就会依次调用do_abc函数(尽管在obj_abc的上下文中,无论如何这都是您想要的)。您还将获得以下额外奖励:
  • 它不再掩盖该方法中可能最初存在的任何默认功能(尽管在这种情况下,onShow是一个意味着可以破坏的存根)
  • 您可以通过这种方式将任意数量的函数连接到onShow
  • 当小部件销毁时,连接将自动断开(与dojo.connect相反,您必须手动将其断开)。

  • 想要查询更多的信息:
  • http://dojotoolkit.org/api/dijit/_Widget/connect
  • 08-17 12:39