我目前正在大量编写基于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的链接会很好,虽然谷歌和雅虎!将为我揭示此事的任何额外内容...... :)
答案 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();
哪种类型违反了文档。它应该采用一个函数或一个函数数组。