Polymer中的纸质对话框未在iPhone中关闭

时间:2015-10-12 07:58:56

标签: javascript polymer polymer-1.0 paper-elements

我使用聚合物文档中的这个例子

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上它不起作用。 我无法关闭对话框。

我该如何解决这个问题?

2 个答案:

答案 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

希望它适合你:)