我已经编写了自己的 dijit 小部件,并扩展了现有的小部件。它只是使用扩展小部件作为参数进行新声明,并使用自己的而不是扩展的小部件。
但是,我对 dojox/form/Uploader
有疑问,因为它是使用旧式语法的“旧式”小部件。不应使用 require
返回的对象,而应使用全局对象:
require(['dojox/form/Uploader'], function(Uploader){
var u = new dojox.form.Uploader({})
u.startup()
})
那么,如果我想扩展该小部件,并使用子“类”而不是原始的“类”,我实际上应该怎么做?
我不完全理解的另一件事是,为什么需要对 dojox/form/Uploader 使用“旧式”语法,因为它是使用与“正常”相同的语法创建的小部件:
return declare("dojox.form.Uploader", [Base, Button, HTML5, IFrame, Flash], {
最佳答案
我相信你可以像“新风格”(AMD)小部件一样扩展它,即:
require([
"dojo/_base/declare",
"dojox/form/Uploader"
], function(decl) {
var MyUploader = decl(dojox.form.Uploader, {
buildRendering: function() {
this.inherited(arguments);
this.domNode.appendChild(
document.createTextNode(" ← awesome"));
}
});
new MyUploader({}).placeAt("x").startup();
});
或者我误解了你的问题? uploader (和其他一些小部件)中存在“旧样式”语法痕迹的原因可能只是因为没有人有时间将其移植到新样式(因此它可能会自动“转换”)。
编辑:实际上,除了设置全局 dojox.form.Uploader 之外,Uploader 还返回一个“新样式”对象。所以你实际上可以将上面的例子改为:
require([
"dojo/_base/declare",
"dojox/form/Uploader"
], function(decl, Uploader) {
var MyUploader = decl(Uploader, {
....
因为Uploader === dojox.form.Uploader
在这里。
关于javascript - 如何扩展 'old style' dojox 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25606379/