我使用聚合物文档中的这个例子
var dashboard=angular.module('Channabasavashwara');
dashboard.controller('roleController',function($scope,$http,$state){
$scope.deleteRoleData=function(rid){
id=rid;
var userdata={'userid':id};
$http({
method: 'POST',
url: "php/userrole/deleteRoleData.php",
data:userdata,
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}).then(function successCallback(response){
//console.log('delete',response);
alert(response.data);
$state.go('dashboard.role',{}, { reload: true });
},function errorCallback(response) {
alert(response.data);
$state.go('dashboard.role',{}, { reload: true });
});
}
})
dashboard.directive('ngConfirmClick', [
function() {
return {
priority: 1,
link: function(scope, element, attr) {
var msg = attr.ngConfirmClick || "Are you sure?";
var clickAction = attr.ngClick;
attr.ngClick = "";
element.bind('click', function(event) {
if (window.confirm(msg)) {
scope.$eval(clickAction)
}
});
}
};
}
])
在每个浏览器中,当我点击不是对话框的地方时对话框关闭,但在iPhone IOS 8.4上它不起作用。 我无法关闭对话框。
我该如何解决这个问题?
答案 0 :(得分:0)
我知道IOS上的Safari存在Z-index问题。可能纸质对话框不应该像它应该的那样位于顶部。在使用IOS时,您可能需要为该类添加-webkit前缀。
答案 1 :(得分:0)
经过一些研究,我在聚合物Github上发现了这个问题,并且有一种方法可以破解它以便它起作用:
_finishRenderOpened: function() {
// focus the child node with [autofocus]
if (!this.noAutoFocus) {
this._focusNode.focus();
}
if(this.withBackdrop) {
this.parentNode.insertBefore(this._backdrop, this);
}
this.fire('iron-overlay-opened');
this._squelchNextResize = true;
this.async(this.notifyResize);
},
(代码https://github.com/dhpollack)
"要以一种很好的方式实现dhpollack的hack,请将此函数添加到自定义元素中:
patchOverlay: function (e) {
if (e.target.withBackdrop) {
e.target.parentNode.insertBefore(e.target._backdrop, e.target);
}
},
并将on-iron-overlay-opened="patchOverlay"
添加到您的所有<paper-dialog>
&#34;
(https://github.com/rubenstolk实施)
Github问题:https://github.com/PolymerElements/paper-dialog/issues/7
希望它适合你:)