首页 文章

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

提问于
浏览
0

我创建了一个自定义选择指令,当你点击选项时,它应该使用$ 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);
        }
    });
}

就像 Headers 中提到的那样,这段代码完美无缺,但只是第一次打开模态 . 关闭模态并再次打开后,$ ionicposition.offset返回的值仅为0 .

1 回答

  • 0

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

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

相关问题