我创建了一个自定义选择指令,当您点击选项时,它应该使用$ 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.
答案 0 :(得分:0)
我找到了一个(可能是部分的)解决方案,其中不使用.hide()来隐藏模态,而是使用.remove()来完全删除它,强制完成重建。
这模仿了第一次工作的行为,因为每次打开模态都是“第一次”。