angular-ui-bootstrap 0.13.4工具提示,自定义切换不在IE中工作

时间:2015-09-18 13:49:21

标签: angularjs angular-ui-bootstrap

要通过自定义代码使bootstrap的工具提示/ popover可以关闭,我们使用指令:

.directive('popoverToogle', ['$timeout', function($timeout) {
  return {
    scope: true,
    link: function(scope, element, attrs) {
      function trigger(element, evt) {
        evt = new Event(evt);
        element[0].dispatchEvent(evt);
      }
      scope.opened = false;
      scope.togglePopover = function() {
        $timeout(function() {
          trigger(element, scope.opened ? 'close' : 'open');
          scope.opened = !scope.opened;
        });
      };
      scope.closePopover = function() {
        $timeout(function(){
          trigger(element, 'close');
          scope.opened = false;
        });
      };
      return element[0].addEventListener('click', scope.togglePopover);
    }
  };

它使用Changelog中提到的版本0.13.4的dispatcheEvent(new Event())方法。 由于必须预期此代码无法在Internet Explorers中使用。

我想知道的是: 为什么测试通过? 查看commit,他们使用与我的指令完全相同的代码。

我还可以做些什么来使我的指令工作?

1 个答案:

答案 0 :(得分:0)

我终于结束了从here借来的polyfill。我发现的大多数其他人都没有以这种方式纠正他们假设typeof window.CustomEvent === 'function'typeof window.CustomEvent === 'object'。 这并不能解决Safari window.CustomEvent 一个对象但行为类似于构造函数的问题。 所以

try { var ev = new Event('click'); catch (e) { … }

对我来说是正确的解决方案。

仍在考虑改为angularStrap。