startup() определен в _Widget и является просто «частью жизненного цикла». Это последний шаг жизненного цикла виджета и не требуется для всех виджетов. Наиболее распространенным случаем, когда это абсолютно необходимо, является программное создание виджетов макета. Он используется для предотвращения избыточных вычислений, когда дети нуждаются в калибровке. Например, BorderContainer.
var bc = new dijit.layout.BorderContainer({
style:"height:200px; width:200px"
});
// can call bc.startup() now, and the BorderContainer will resize
// all children each time a new child is added. Or, we can add all
// our children now, then trigger startup() and do it all at once.
var top = new dijit.layout.ContentPane({
region:"top", style:"height:100px"
}).placeAt(bc);
var mid = new dijit.layout.ContentPane({ region:"center" }).placeAt(bc);
// now BC will do the calculations, rather than in between each
// the above addChild/placeAt calls.
bc.startup();
запуска автоматически вызывается анализатором в случае parseOnLoad: правда или ручного исполнения. Парсер задерживает вызов startup(), пока все найденные дочерние виджеты не будут созданы соответствующим образом.
dijit.Dialog - странный случай. startup() ДОЛЖЕН быть вызван и в этом виджете.
var dialog = new dijit.Dialog({ title:"Hmm", href:"foo.html" });
dialog.startup();
dialog.show();
Большинство виджетов не требуют запуска называется, но в тех случаях, когда что-то наследующий _Widget не перекрывающих элемента запуска, вызов по существу установка не оп this._started = истина; Если вы создаете свою собственную функцию startup(), вы должны либо вызвать this.inherited (аргументы), либо просто установить пуск _started вручную.
В Dojo 1.4 жизненный цикл здесь немного скорректирован.Раньше виджет с widgetsInTemplate: true вызывал startup() в дочерних виджетах перед запуском() родительского элемента. В 1.4 детский запуск() будет вызван ПОСЛЕ запуска родительского запуска(). Это поведение является рекурсивным для любого количества вложенных виджетов с widgetsInTemplate: true.
Это всегда «безопасно» для вызова .startup(), хотя если вы «знаете» (поскольку это простой виджет конечной точки или ваш собственный код _Widget), вы можете опустить вызов.
Просто для информации поведение reg dijit.Dialog немного изменилось, теперь вызов show автоматически вызывает запуск изнутри функции – Gaurav