2017-10-11 2 views
0

ExtJS의 탭 막대에 대한 간단한 질문입니다. 필자는 많은 컨트롤이있는 창을 만들었으며 탭 모음의 각 탭 6 개 안에 일련의 컨트롤로 마무리됩니다. 각 탭의 컨트롤은 거의 동일하며 이벤트를 변경하는 탭을 처리하지 않습니다. 그러나 탭을 선택하면 포커스가 대화 상자의 맨 위로 돌아오고 (그렇게 정당한 방식으로 스크롤하면) 사용자는 탭을 수동으로 다시 스크롤하여 현재 컨트롤이 표시되는지 확인해야합니다.탭 바에서 탭을 선택할 때 ExtJS 창이 맨 위로 이동합니다.

변경하는 탭이 Windows Refesh를 생성합니까? 만약 그렇다면, 내가 이런 일을 막을 수있는 방법이 있습니까?

나는이 일이 내 두 대의 컴퓨터 중 하나에만 국한되어 있음을 고백해야합니다. Azure에서 완성 된 응용 프로그램을 설치했고 IE 나 Chrome에서 machine1로 실행할 때 제대로 작동합니다. 그러나 machine2를 IE와 Chrome의 같은 버전과 함께 사용하면 점프와 이상한 이벤트가 발생합니다. 거기에 점프를 일으킬 수있는 기계 의존적 인 가치가 있습니까?

답변

0

그냥 당신이 좀 더 파고 주위에 무슨 일이 일어 났는지 알게 있음을 알려 주셔서 감사합니다. 내 두 PC의 차이는 노트북에 터치 스크린이 있다는 것입니다. 이로 인해 ExtJS는 특수 스크롤 클래스를 추가하여 사용자가 손가락으로 대화 상자의 스크롤을 처리합니다.

나를 위해 생성 된 몇 가지 문제가 있습니다. 첫째, 활성 탭을 전환 한 후 스크롤러가 재설정되면 맨 위로 이동했습니다. 리셋 기능은 스크롤을 맨 위로 되돌려 놓는 것을 포함하여 물건을 제거했습니다. 흥미롭게도 탭 페이지를 전환하면 96 명의 스크롤러가 재설정되었습니다. 왜 이런 경우가 될지 생각할 수 없으며 단지 어쨌든 새로 고침이 필요한 이유를 알지 못하는 탭이 아니라 전체 대화 새로 고침을 일으키는 것으로 의심됩니다. 이 일을 막을 수있는 방법을 찾고 있습니다.

위의 몇 가지 다른 문제에 대해 언급했습니다. 하나는 두 번째 탭이 비어 있지만 스크롤 막대가있는 것으로 나타났습니다. 적절한 탭 콘텐츠를보기 위해이를 사용할 수 있습니다. Ext JS 버그라는 것을 발견했습니다. 실수로 Ext JS가 다음 탭을 활성화했을 때, 탭 내부에있는 것이 아니라 스크롤하는 클래스 (x-scroll-scroller로 표시) 외부에 탭을 배치했습니다. 이로 인해 혼란스러워졌습니다. 이 문제를 해결하기 위해 Ext.layout.container.Container 클래스의 getRenderTarget 함수에 일부 코드를 추가했습니다. 이전이 단순히

getRenderTarget: function() { 
    return this.owner.getTargetEl(); 
} 

내가 특정 테스트는 첫 아이가 스크롤러이었다 있는지, 케이스 인 대신 스크롤을 반환 것을 추가했다.

getRenderTarget: function() { 
    var me = this.owner; 
    if (me.body && me.body.dom.firstChild.className == 'x-scroll-scroller') 
     return me.body.dom.firstChild; 
    return me.getTargetEl(); 
} 

탭 컨트롤의 상위가 이제 올바르게 유지되고 위에서 간략하게 언급 한 다른 이상한 아티팩트가 사라졌습니다.

현재 재생 상태입니다. 나는 refesh를 멈추는 방법을 찾고 있으며 그것을 찾을 때 이것을 업데이트 할 것이다. 그러나 터치 스크린 지원은 확실히 flakey 다.

참고하시기 바랍니다. Ext JS 6.1을 사용하고 있습니다.