2011-10-28 3 views
2

구성 요소를 제거하는 올바른 방법은 무엇입니까? 더 이상 사용하지 않을 것이지만 나중에 같은 클래스의 새 인스턴스를 사용하고 싶습니다.Sencha Touch 2 구성 요소 제거

예를 들어, Ext.Viewport.add()을 사용하여 뷰포트에 작성 폼이 추가되었지만 일단 제출되면 양식을 삭제하려고하므로 다음에 사용자가 항목을 만들고 새로운 양식이 생성됩니다 (예 : new 구성 요소가 인스턴스화됩니다.

나는 모두 Ext.Viewport.remove(form, false)Ext.Viewport.remove(form, true)을 시도했지만 둘 다 오류 메시지를 표시합니다 : TypeError: Cannot set property 'className' of undefined.

답변

1

분명히 작동하지 않는 이유는 제거 할 구성 요소에 포함 된 구성 요소의 이벤트 처리기에서 실행 한 코드에서 구성 요소를 제거하려고했기 때문입니다.

예를 들어, 버튼을 클릭하면 버튼이 컨테이너 구성 요소를 뷰포트에서 즉시 제거하려고 시도하지만 제거는 성공하지만 버튼 릴리스 이벤트는 작업 할 DOM 요소없이 호출됩니다. 버튼 자체도 제거되었습니다.

간단한 해결 방법은 잠시 후 Ext.Viewport.remove(...)으로 전화하는 것입니다.

+0

그냥 생각하고 너무 열심히 생각하지 않았지만 릴리스 이벤트 내에서 제거를 호출하는 것이 더 좋지 않습니까 (또는 단추 클릭으로 트리거 된 마지막 트리거)? –

+0

그건 아마 작동 할 것 ... 불행히도 나는 더 이상 그 코드를 테스트하지 않아도됩니다. –

+0

하하, 잘됐다. 완전히 오래된 게시물! :) 나는 항상 Sencha Touch의 비동기 성질을 잊어 버리는 데 어려움을 겪습니다! –