【问题标题】:Angular element JQuery .on command not working properlyAngular 元素 JQuery .on 命令无法正常工作
【发布时间】:2016-11-15 07:43:52
【问题描述】:

我有一个使用 Angular JS 1.5.3 用 typescript 编写的指令,我正在使用 webpack 加载 angular 和 jquery 等。我已经设法让 Angular 使用完整的 JQuery 而不是 jquerylite。

但是,在下面的 sn-p 中,我的 element.on 不会触发事件。但是,当我单独使用 jquery 来做同样的事情时,它会起作用。

即控制台只打印“打我”

function DropdownCloseHandler(): ng.IDirective {
  return {
    restrict: 'A',
    link: (scope, element, attrs) => {
      element.on('hidden.bs.dropdown', (e) => {
        console.log('hit me');
      });
      $('#search-box-dropdown').on('hidden.bs.dropdown', (e) => {
        console.log('hit me instead');
      });
    }
  };
}

angular
  .module('components')
  .directive('dropdownClose', DropdownCloseHandler);

element$('#search-box-dropdown') 似乎在我的 chrome 调试器中引用了相同的元素。

有人知道我做错了什么吗?

【问题讨论】:

    标签: jquery angularjs angularjs-directive typescript


    【解决方案1】:

    根据我的经验,使用.on 时,您必须将其绑定到document

    所以,我会使用:

    $(document).on('hidden.bs.dropdown', (e) => {
      console.log('hit me');
    });
    

    虽然我从未将它与 Angular 一起使用,但我认为没有任何动作可以使它工作。但是先试试?

    【讨论】:

    • 这和只使用 jquery 选择器不一样吗? $('#search-box-dropdown').on 也可以,但它破坏了将指令附加到元素的整个目的,将元素本身传递给指令。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多