$ ionicposition仅在第一次打开模态时在模态上设置正确的值

时间:2017-12-19 09:03:42

标签: javascript jquery angular ionic-framework

我创建了一个自定义选择指令,当您点击选项时,它应该使用$ ionicposition来根据HTML元素ID找到所选选项,然后使用$ ionicscroll delegate滚动到它。

这是定位选项的函数,然后滚动到它:

  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函数的地方:

    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.

1 个答案:

答案 0 :(得分:0)

我找到了一个(可能是部分的)解决方案,其中不使用.hide()来隐藏模态,而是使用.remove()来完全删除它,强制完成重建。

这模仿了第一次工作的行为,因为每次打开模态都是“第一次”。