에 나는이 같은 창을 만들마이그레이션 엽차는 ExtJS 4.0의 ExtJS 4.1
_target.on("render", function (items) {
if (items.length > 0) {
this.show();
this.add(items);
this.doLayout();
var buttonText = targetParams.ButtonText || this.title;
createToolbarButton(this.id, buttonText, targetParams.UIConfigurationId);
} else {
_target.destroy();
}
});
문제는이 라인 this.show();
에 있습니다. 4.0이 선이 기능을
show: function() {
this.callParent(arguments);
this.performDeferredLayouts();
return this;
},
를 호출하지만 4.1에서 같은 라인은 다른 함수를 호출
show: function(animateTarget, cb, scope) {
var me = this;
if (me.rendered && me.isVisible()) {
if (me.toFrontOnShow && me.floating) {
me.toFront();
}
} else if (me.fireEvent('beforeshow', me) !== false) {
me.hidden = false;
if (!me.rendered && (me.autoRender || me.floating)) {
me.doAutoRender();
}
if (me.rendered) {
me.beforeShow();
me.onShow.apply(me, arguments);
if (me.ownerCt && !me.floating && !(me.ownerCt.suspendLayout || me.ownerCt.layout.layoutBusy)) {
me.ownerCt.doLayout();
}
me.afterShow.apply(me, arguments);
}
}
return me;
},
은에서 선 아래로 layout.renderChildren()
을 시도하고 다음 오류가 있습니다.
나는 생성 된 객체가 다르다고 생각하지만 "Upgrade 4.0 to 4.1"문서에서 다루어 진이 질문을 보지 못했습니다.
제 질문은이 작업을하기 위해서 무엇이 필요합니까?
도움을 미리 감사드립니다.
업데이트 : 코드의 일부를 변경했습니다 그것은 더 이상 그 오류를 생성하지 않습니다
ViewPort
North
...
West
...
Center
Window
Panel
Panel
Label
...
BorderSplitter
Panel
Label
...
Panel
List
South
...
:
응용 구조를 다음과 같이 보일 것 창을 추가 한 후.
_target.on("beforeRender", function (items) {
if (items.length > 0) {
_target.add(items);
_target.doLayout();
var buttonText = targetParams.ButtonText || _target.title;
createToolbarButton(_target.id, buttonText, targetParams.UIConfigurationId);
} else {
_target.destroy();
}
});
_target.show();
_target.toFront();
그러나 지금은 _target.add(items);
을 호출 할 때 다른 것을 생성합니다.
오류
내가 호출 스택을 분석하는 시도하고이 오류를주는 이유를 발견했습니다me.container = container.dom ? container : Ext.get(container);
이 줄에 "속성 'DOM'의 값을 가져올 수 없습니다"입니다. 그것은이 함수를 호출 할 때 : "이"나는 통화 "getRenderTarget()"반환 정의되지 않은 항목을 추가 해요 곳으로, 윈도우의 레이아웃 객체를 참조
renderChildren: function() {
var me = this,
items = me.getLayoutItems(),
target = me.getRenderTarget();
me.renderItems(items, target);
},
. 그런 다음 위에서 언급 한 오류를 던져서 정의되지 않은 dom 속성에 액세스하려고합니다.
여기서 볼 수 있듯이, 창을 만들 때 객체 (aBody)를 renderTo 속성에 전달하기 때문에이 부분이 손실됩니다.
어떤 아이디어 ??
정확한 오류를 알려주세요. 또한 왜 "렌더링"에서 this.show()를 호출합니까? –
오류는 "개체가이 속성 또는 메서드 'renderChildren()'을 지원하지 않습니다."입니다. 그리고 렌더링 내부에 렌더링 할 항목이있는 경우에만 창을 표시합니다. –
이 이벤트 사용 (beforeshow) : http://docs.sencha.com/ext-js/4-1/#!/api/Ext.AbstractComponent-event-beforeshow 원하지 않는 경우 이벤트에서 false를 반환합니다. 창을 표시합니다. –