나는 다소 진보 된 TabPanel
마법사가 있는데 제대로 작동하지 못하는 것 같습니다. 기본적으로, 나는 4 개의 탭을 가지고있다 ... 각 탭은 그 자신의 폼이다. 탭이 그 자체로 밸리데이션을해야하기 때문에, 탭을 오른쪽으로 비활성화해야하는지, 다음 탭을 활성화해야 하는지를 결정할 수있다.고급 탭 패널 마법사
내가 다루는 주된 특징은 렌더링되지 않은 탭이 실제로 유효하다고 생각한다는 것입니다. 실제로 필드가 allowBlank: false
으로 설정되어 있고 값이 비어 있습니다. 그렇다면 반전이 있는데, 여기에 값이 설정되어 있지만 유효하지 않다고 생각합니다.
다른 단점은 탭 패널이로드 될 때 this.getViewModel().notify()
으로 전화해야한다는 것입니다. 그렇지 않으면 초기 유효성을 확인할 때 활성화 된 양식이 유효하지 않다고 생각합니다.하지만 이것이 바인딩과 관련이 있다고 생각합니다. 지연 때문에 지금 당장이 문제를 처리 할 수 있습니다.
이 문제를 해결하기 위해 deferredRender: false
을 사용할 수는 있지만 실제로 사용하는 앱에서는 탭이 각 탭에서 진행되기 때문에 원하지 않습니다. 따라서 성능이 좋지 않습니다.
In my Fiddle에 세 개의 탭이 활성화되어있는 것을 볼 수 있습니다. 사실 3 번째 탭에는 모델의 데이터가 있지만 유효하지 않다고 믿기 때문에 4 개의 탭이 활성화되어 있어야합니다. 이 탭은 유효하지 않다고 생각하기 때문에 isValid가 false인지 확인하기 때문에 checkValidity 메소드가 다시 발생합니다 (현재 탭이 유효하지 않은 경우 탭을 사용하지 않도록 설정하고 사용자가 계속 실행해야합니다. 디자인). 콘솔에서 :
- tab3에는이 allowBlank로 설정되어 있기 때문에 사실이 아니다, 이는 무효라고 생각 : 거짓,하지만 이
- Tab4이 때문에 사실이 아니다, 이는 유효하다고 생각한다 바인드 값을 갖는다 허용하도록 설정되었습니다. 허점 : 값이 없습니다.
아무도 통찰력이 있습니까? 이 끔찍한 잘못에 대해 내가 갈 건가요?
전체 디버그 프로세스를 수행해 주셔서 감사합니다 ... 그게 내가 생각한 것입니다. 그러나 여기에 allowBlank : false 및 빈 값이있는 입력란이있는 경우 양식이 유효하지 않아야합니다. 이는 정말 이상합니다. 설계 상 유효하지 않으므로 tab4도 유효하지 않아야합니다. false와 true의 문제는 탭이 무효화 된 후에 다른 탭이 활성화 될 수 있기 때문에 많은 시간 (isValid 호출로 인해) 발생하며 원하는 동작이 아니라는 것입니다. – incutonez
값이 비어있을 때 공백 값을 허용하지 않는 필드에는 양식이 유효하지 않습니다. 그것이 tab3이 유효하지 않은 이유입니다. 문제는 양식이 작성되고 렌더링 될 때까지 필드가 전혀 없다는 것입니다. 그리고 _zero_ 필드가있는 양식이 유효합니다. –
로버트는 해당 로직을 사용하여 tab3이 아직 렌더링되지 않았으므로 유효해야합니다. – incutonez