gpt4 book ai didi

javascript - 道场:如何克隆小部件?

转载 作者:行者123 更新时间:2023-11-30 18:36:13 26 4
gpt4 key购买 nike

我如何着手克隆一个 Dojo 表单 (dijit.form.Form) 及其子窗口小部件?理想情况下,我也想更改克隆小部件的 ID。我也有兴趣克隆可能附加到小部件的任何事件。

我玩了一下 dojo.clone但这仅适用于 DOM 对象。

谢谢

最佳答案

假设继承确实是您所需要的,那么我会制作一个新的小部件。假设您正在使用异步加载器和 Dojo 1.7。我会做类似的事情:

define([
'dojo',
'module',
'dijit/form/Form',
'dijit/form/TextBox',
'dijit/_TemplatedMixin',
'dijit/_WidgetsInTemplatedMixin'
], function (dojo, module, Form, TextBox, _TemplatedMixin, _WidgetsInTemplatedMixin) {
// I have a wrapper for declare that handles this, but...
return dojo.declare(module.id.replace(/\//g, '.'), [Form, _TemplatedMixin, _WidgetsInTemplatedMixin], {

widgetsInTemplate: true,

// Make a template, I usually use a separate file.
templateString: '<form data-dojo-type="dijit.form.Form">' +
'<input data-dojo-type="dijit.form.TextBox" />' +
'</form>'

postCreate: function () {
this.inherited(arguments);
// Attach your specialized events.
}
});
});

如果您正在使用同步加载器,那么您需要 dojo.declare:

dojo.provide('mynamespace.CustomForm');

// Do this for all child widgets and anything else you use.
dojo.require('dijit.form.Form');
dojo.require('dijit._Templated');
dojo.require('dijit.form.TextBox');

dojo.declare('mynamespace.CustomForm', [dijit.form.Form, dijit._Templated], {

widgetsInTemplate: true,

// Make a template, I usually use a separate file.
templateString: '<form dojoType="dijit.form.Form">' +
'<input dojoType="dijit.form.TextBox" />' +
'</form>'

postCreate: function () {
this.inherited(arguments);
// Attach your specialized events.
}
});
});

然后您的模块将可以使用 var container = someElement; new path.to.File({}, container);.或者您可以在标记中声明小部件。让我知道我是否可以使它更具体或适用于不同版本的 Dojo。

关于javascript - 道场:如何克隆小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8117676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com