【问题标题】:using onShow and onLoad for dijit.layout.ContentPane created programatic使用 onShow 和 onLoad 为 dijit.layout.ContentPane 创建程序化
【发布时间】:2011-01-07 15:04:16
【问题描述】:

我创建了一个声明式和程序式的 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()

【问题讨论】:

    标签: javascript dojo


    【解决方案1】:

    为了在技术上等同于您的第一个示例,您只需在传递给 ContentPane 构造函数的参数对象中包含 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,您必须手动断开)。

    更多信息:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多