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 : true 또는 수동 실행의 경우 파서에 의해 시작 프로그램이 자동으로 호출됩니다. 파서는 발견 된 모든 자식 위젯이 적절하게 인스턴스화 될 때까지 startup()을 호출하는 것을 지연합니다.
dijit.Dialog는 이상한 경우입니다. 이 위젯에서도 startup()을 호출해야합니다.
var dialog = new dijit.Dialog({ title:"Hmm", href:"foo.html" });
dialog.startup();
dialog.show();
대부분의 위젯이라고 시작을 필요로하지 않지만, _Widget에서 상속 뭔가 시작 멤버를 오버라이드 (override)하지 않는 경우, 호출은 무 조작 설정이 = 사실 this._started 본질적; 자신 만의 startup() 함수를 만들면 this.inherited (arguments)를 호출하거나 단순히 _started 트리거를 수동으로 설정해야합니다.
Dojo 1.4에서, 여기의 라이프 사이클이 약간 조정되었습니다.이전에는 widgetsInTemplate : true가있는 위젯이 부모 위의 startup() 전에 자식 위젯에서 startup()을 호출했습니다. 1.4에서는 부모 시작() 후에 자식 시작()이 호출됩니다. 이 동작은 widgetsInTemplate이있는 여러 중첩 된 위젯에 대해 재귀 적입니다. true가 인스턴스화됩니다.
.startup()을 호출하는 것은 항상 안전하지만, 단순한 엔드 포인트 위젯 또는 사용자 정의 _Widget 코드이기 때문에 "알았다"는 경우에는 호출을 생략 할 수 있습니다.
그냥 행동 정보 reg dijit.Dialog가 약간 변경되었습니다. 이제 show가 자동으로 함수 내부에서 시작을 호출합니다. – Gaurav