子ウィジェットを使用してDojoフォーム(dijit.form.Form)をクローンする方法を教えてください。理想的には、クローンウィジェットのIDも変更したいと思います。また、ウィジェットに付随する可能性のあるイベントのクローニングにも興味があります。dojo:ウィジェットをクローンする方法?
私はdojo.cloneで少し演奏しましたが、これはDOMオブジェクトでのみ機能します。継承を仮定し
おかげ
子ウィジェットを使用してDojoフォーム(dijit.form.Form)をクローンする方法を教えてください。理想的には、クローンウィジェットのIDも変更したいと思います。また、ウィジェットに付随する可能性のあるイベントのクローニングにも興味があります。dojo:ウィジェットをクローンする方法?
私は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の異なるバージョンに適用できるかどうかを教えてください。
例コードが参考になります。 'dijit.form.Form'から継承することが本当に必要なようです。 DojoはIDがあなたにとって一意であることを保証しますので、これは問題ではありません。 – fncomp
Dojo 1.7で非同期ローダーを使用していますか? – fncomp
いいえ、Dojo 1.7で非同期ローダーを使用していません。 Dojo 1.6.1の使用 – Ayyoudy