Dojo小部件默认值

时间:2009-07-23 09:50:55

标签: javascript widget dojo

我目前正在大量编写基于dojo工具包的大型应用程序。整个应用程序正在工作和站立,但我无法找到出路的一个问题是创建自定义小部件。它会很有用,因为它会清理我的源代码,并且我可以在以后的项目中重用这个“小部件”。

例如:我有一个主工具栏,我想用

打电话
myapp.toolbar = new myapp.mainToolbar();

而不是使用

myapp.toolbar = new new dijit.Toolbar({}, containerID);
var button1 = new dijit.form.Button({
            label: 'Delete',
            id: 'toolbarbutton1',
            showLabel: true,
            iconClass: "dijitEditorIcon dijitEditorIcon Delete"
         });
myapp.toolbar.addChild(button1);
...

简而言之:如何在其他地方设置整个工具栏并将其称为简单对象?试图找出dojo.declare('myapp.mainToolbar', dijit.Toolbar, {...})然后我得到一堆错误,如'启动功能不存在'等...

我想以编程方式执行所有操作,因此在自定义小部件中没有模板html和css文件。

一个好的教程或howto的链接会很好,虽然谷歌和雅虎!将为我揭示此事的任何额外内容...... :)

2 个答案:

答案 0 :(得分:2)

有多种方法可以做到这一点。

似乎你的扩展工具栏的方法应该有用(不知道为什么它没有)。

您还可以使用widgetsInTemplate声明一个嵌入工具栏和按钮的类:

dojo.declare("MyToolbar", [dijit._Widget, dijit._Templated], {
     _widgetsInTemplate: true,
     templateString: '<div> <div dojoType=dijit.Toolbar>' +
                ' <button dojoType=dijit.form.Button ...

请注意,MyToolbar中的顶级节点不能有dojoType,因此我将工具栏放下一级。

或者你可以使用dijit.Declaration做同样的事情,参见http://docs.dojocampus.org/dijit/Declaration

答案 1 :(得分:0)

当我使用声明与数组中的超类时,它对我有用:

 dojo.declare('myapp.mainToolbar', [ dijit.Toolbar ],
               {
                ....
                }
 );

 var x = new myapp.mainToolbar({ ... });
 x.startup();

哪种类型违反了文档。它应该采用一个函数或一个函数数组。