2015-02-06 11 views
0

필터 확장이있는 fancyTree v2.7.0을 사용하고 있습니다. 자동 스크롤 기능을 사용하여 활성 노드로 스크롤했습니다.Fancytree scrollIntoView when Filtered

내가 겪고있는 문제는 treeview가 필터링되었을 때입니다. 확장 버튼을 클릭하여 항목의 하위 항목을 표시하면 콘솔에 다음과 같은 오류 메시지가 나타납니다.

Error: Fancytree assertion failed: scrollIntoView node is invisible 

나는 문제 http://jsfiddle.net/ajw89/86308as6/8/

이것은 Fancytree 버그 아니면 내가 뭔가 잘못 한을 재현하기 위해 jsFiddle을 만들었습니다?

+0

제안 사항 : 프로젝트 페이지에서 문제를 열어보십시오. – mar10

+0

문제점을 열었습니다. https://github.com/mar10/fancytree/issues/391 –

답변

1

같은 문제가 발생했습니다. autoScroll : true필터 : {mode : "hide"} 설정이 지정된 경우에만 나타납니다. 이 설정을 사용하지 않고 떠날 수 있다면 잘 작동합니다!

노드의 마지막 자식에 대해 자동 스크롤을 계산할 때 nodeSetExpanded() 메서드에서 문제가 발생합니다. 이 자식이 필터 조건과 일치하지 않으면 필터링에 의해 숨겨 지므로 .is (": visible") 어설 션이 실패합니다. 나는 FancytreeNode에 다음과 같은 방법을 도입하여 로컬에서이 문제를 해결했습니다

내가 nodeSetExpanded에서이 방법을 사용하는 것보다
getLastVisibleChild: function() { 
     var last = null; 

     if (this.children) { 
      for(var i=0, l=this.children.length; i<l; i++){ 
       if ($(this.children[i].span).is(":visible")) { 
        last = this.children[i]; 
       } 
      } 
     } 

     return last; 
    } 

은()

// Scroll down to last child, but keep current node visible 
node.getLastVisibleChild().scrollIntoView(true, {topNode: node}).always(function(){ 

작품 벌금

// Scroll down to last child, but keep current node visible 
node.getVisibleChild().scrollIntoView(true, {topNode: node}).always(function(){ 

를 교체 .