2017-12-19 11 views
0

は私がカスタムを選択ディレクティブを作成しているとあなたがオプションに入り込むこのディレクティブの中にはHTMLに基づいて選択したオプションを見つけるために$ ionicpositionを使用する必要があります開いているモーダルで初めて正しい値を設定します要素IDを作成し、$ ionicscroll delegateを使用してスクロールします。

このオプションを見つけ関数であり、それにスクロール:scrollTo関数が呼び出される場合

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); 
} 

これは、次のとおりです。タイトルに言及した

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); 
     } 
    }); 
} 

そうのように、このコードは完全に機能しますが、モーダルが初めて開かれたときだけです。モーダルを閉じて再び開いた後、$ ionicposition.offsetは0の値しか返しません。

+0

それは多分あなたはキャッシュを無効にする必要があること、イオン性でキャッシュ上のいくつかの研究を行います。それはリフレッシュされているように見える、それを停止する必要があります。 – Ramonster

答えて

0

モーダルを隠すために.hide()を使う代わりに.remove()を実行すると完全に削除され、完全な再構築が強制されます。

これは今モーダルが開かれるたびに「最初の」の時間であるとして、それは最初の時間を働いていた行動を模倣します。

関連する問題