Мне нужно добавить пользовательский виджет к конкретному div в любое время, когда я инициализирую новый виджет.Присоединение виджета к определенному узлу
Я считаю, что самый стандартный способ будет использовать что-то ссылку
(new MyFirstWidget()).placeAt('myDiv');
Я на самом деле не в восторге от такого подхода, поскольку он требует детали для placeAt()
в каждой инициализации, и в моем случае, мне нужно, чтобы заставить что тип виджета, который будет вложен в конкретный div все время.
Вместо этого я хотел бы добавить эту информацию в класс виджетов.
В настоящий момент я использую следующий код, используя placeAt()
в postCreate()
работает отлично.
Я хотел бы знать:
- ли
postCreate()
подходящее место? Может быть добавлено в лучшем случае во время жизненного цикла виджета? - Я заметил, что перед вызовом
this.placeAt()
вpostCreate()
виджет помечается какrendered
, когда на самом деле не было вынесено, потому что не был добавлен в DOM еще ... почему это?
define([
'dojo/_base/declare',
'dojo/dom-construct',
'dijit/_WidgetBase',
'dijit/_TemplatedMixin',
'dojo/text!./templates/PanelBasic.html'
], function (
declare,
domConstruct,
_WidgetBase,
_TemplatedMixin,
template
) {
'use strict';
var attachTo = 'myPanels';
return declare([_WidgetBase, _TemplatedMixin], {
templateString: template,
ntvType: 'Panel',
constructor: function() {
},
postCreate: function() {
this.inherited(arguments);
this.placeAt(attachTo);
}
});
});
Спасибо за ваш ответ, я добавил свой вопрос, отметив this.inherited() – GibboK
Полезная статья https://dojotoolkit.org/documentation/tutorials/1.6/declare/ – GibboK
Просто быстрый вопрос, не связанный, обычно используйте this.inherited (arguments) в costructor() и в this.preamble()? Спасибо за ваше время. – GibboK