2017-12-19 10 views
0

사용자 지정 선택 문을 만들었습니다.이 지시문에서 옵션을 누르면 $ ionicposition을 사용하여 HTML을 기반으로 선택한 옵션을 찾습니다 요소 ID를 입력 한 다음 $ ionicscroll 대리자를 사용하여 스크롤합니다.

그것에 다음 스크롤 옵션을 찾아서 기능입니다 :이 제목에 언급 된

private createModal(): void { 
    this.$ionicModal.fromTemplateUrl('app/shared/directives/selectoption/selectoption.modal.html', { 
     scope: this.$scope, 
     hardwareBackButtonClose: false 
    }).then((modal) => { 
     this.selectModal = modal; 
     this.selectModal.show(); 
     if (this.selectedVal !== undefined) { 
      this.scrollToOption(this.selectedVal); 
     } 
    }); 
} 

그래서 같은 :

private scrollToOption(selectedCode: activeh.objects.ICode): void { 
    this.$timeout(() => { 
     let item: HTMLElement = document.getElementById("code-" + selectedCode.CodeID); 
     if(item){ 
      var itemPosition = this.$ionicPosition.offset(angular.element(item)); 
      this.$ionicScrollDelegate.$getByHandle('modalContent').scrollTo(0, itemPosition.top + 40, false); 
     } 
    }, 200); 
} 

이것은 scrollTo의 함수가 호출되는 경우입니다 코드가 완벽하게 작동하지만 처음에는 모달이 열립니다. 모달을 닫은 후 다시 열면 $ ionicposition.offset이 0의 값만 반환합니다.

+0

Ionic에서 캐싱에 대한 일부 연구를 수행하면 캐싱을 비활성화해야 할 수도 있습니다. 상쾌 해지고있는 것처럼 보입니다. 멈추어야합니다. – Ramonster

답변

0

모달을 숨기기 위해 .hide()를 사용하는 대신 (아마도 부분적인) 해결책을 발견했습니다. .remove()를 완전히 제거하여 완전히 다시 빌드해야합니다.

모달을 열 때마다 처음 동작했던 동작을 모방 한 것이고 '처음'시간입니다.