Ionicmodal 直到第三个才打开 Click/Tap
Ionicmodal Doesn't Open Until Third Click/Tap
我已经设置了 div
的 on-tap
值来打开在页面控制器中定义的模式。 div
是 ng-repeat
部分的一部分。模态函数还接受由 div
.
传递给它的一些变量
当应用程序首次在我的设备上启动时 (iPhone 6 运行 iOS 7),我必须点击 div 三次才能出现模态打开。之后,当我点击时它会始终打开。但是当应用程序第一次启动时,我必须点击 div 3 次。
控制台完全没有错误。模式打开后,它会按预期工作。
有什么建议吗?
代码如下:
HTML
<div on-tap="doModal('{{embed.ID}}','reply','{{embed.oembed}}','{{embed.user}}');">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 75 72" width="100" height="50">
<path d="imagestuffhere"/>
</svg>
</div>
控制器
$scope.doModal = function(this_ID,modaltype,this_oembed,this_user) {
$scope.contact = {
name: this_ID,
info: modaltype,
oembed: this_oembed,
user: this_user
}
if (modaltype == 'repost') {
$scope.modaltempl = 'templates/repost-modal.html';
}
else if (modaltype == 'reply') {
$scope.modaltempl = 'templates/reply-modal.html';
}
else if (modaltype == 'like') {
$scope.modaltempl = 'templates/like-modal.html';
}
else {
$scope.modaltempl = 'templates/like-modal.html';
}
$ionicModal.fromTemplateUrl($scope.modaltempl, {
scope: $scope,
animation: 'slide-in-up'
}).then(function (modal) {
$scope.modal = modal;
$scope.modal.show();
console.log($scope.modaltempl);
});
};
$scope.closeModal = function() {
$scope.modal.hide();
};
$scope.$on('$destroy', function() {
$scope.modal.remove();
});
我尝试将 $ionicModal.fromTemplateUrl($scope.modaltempl,
位拉出 $scope.doModal
并从 $scope.doModal
内部调用 $scope.modal.show
,但结果是一样的。
即使模态未打开,它也肯定会到达 scope.modal.show();
语句,因为 console.log
我在它输出后就包含了它。
在将 svg 添加到界面之前,我使用 button
元素对此进行了测试,但遇到了同样的问题。当我使用 ng-click
而不是 on-tap
.
时,它也有同样的问题
感谢您的帮助!
原来问题不在 Ionic 控制器代码中,也不在触发 html 中,而是在模态模板本身中。
根据 Ionic 文档,我的每个模态模板都包含在其中:
<script type="text/ng-template" id="repost-modal.html"></script>
通过删除它并仅用 <ion-modal-view></ion-modal-view>
替换它,问题得到解决,模态窗口现在在第一次点击时打开得非常好。
我已经设置了 div
的 on-tap
值来打开在页面控制器中定义的模式。 div
是 ng-repeat
部分的一部分。模态函数还接受由 div
.
当应用程序首次在我的设备上启动时 (iPhone 6 运行 iOS 7),我必须点击 div 三次才能出现模态打开。之后,当我点击时它会始终打开。但是当应用程序第一次启动时,我必须点击 div 3 次。
控制台完全没有错误。模式打开后,它会按预期工作。
有什么建议吗?
代码如下:
HTML
<div on-tap="doModal('{{embed.ID}}','reply','{{embed.oembed}}','{{embed.user}}');">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 75 72" width="100" height="50">
<path d="imagestuffhere"/>
</svg>
</div>
控制器
$scope.doModal = function(this_ID,modaltype,this_oembed,this_user) {
$scope.contact = {
name: this_ID,
info: modaltype,
oembed: this_oembed,
user: this_user
}
if (modaltype == 'repost') {
$scope.modaltempl = 'templates/repost-modal.html';
}
else if (modaltype == 'reply') {
$scope.modaltempl = 'templates/reply-modal.html';
}
else if (modaltype == 'like') {
$scope.modaltempl = 'templates/like-modal.html';
}
else {
$scope.modaltempl = 'templates/like-modal.html';
}
$ionicModal.fromTemplateUrl($scope.modaltempl, {
scope: $scope,
animation: 'slide-in-up'
}).then(function (modal) {
$scope.modal = modal;
$scope.modal.show();
console.log($scope.modaltempl);
});
};
$scope.closeModal = function() {
$scope.modal.hide();
};
$scope.$on('$destroy', function() {
$scope.modal.remove();
});
我尝试将 $ionicModal.fromTemplateUrl($scope.modaltempl,
位拉出 $scope.doModal
并从 $scope.doModal
内部调用 $scope.modal.show
,但结果是一样的。
即使模态未打开,它也肯定会到达 scope.modal.show();
语句,因为 console.log
我在它输出后就包含了它。
在将 svg 添加到界面之前,我使用 button
元素对此进行了测试,但遇到了同样的问题。当我使用 ng-click
而不是 on-tap
.
感谢您的帮助!
原来问题不在 Ionic 控制器代码中,也不在触发 html 中,而是在模态模板本身中。
根据 Ionic 文档,我的每个模态模板都包含在其中:
<script type="text/ng-template" id="repost-modal.html"></script>
通过删除它并仅用 <ion-modal-view></ion-modal-view>
替换它,问题得到解决,模态窗口现在在第一次点击时打开得非常好。