替换AngularJS中的jQuery'on'函数

JQu*_*ile 11 angularjs

我有一些遗留的jQuery代码,如下所示:

$(document).on('replace', 'div', function (e, new_path, original_path) {
  // do stuff here
});
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何将此代码转换为AngularJS一致的方法.当index.html被加载时,上面的代码正在运行.我正在尝试将初始化代码移动到指令中.目前,我正在调用如下所示的指令:

<body initialize-page>
  ... content goes here
</body>
Run Code Online (Sandbox Code Playgroud)

我的指令如下所示:

.directive('initializePage', function ($document) {
    return {
        restrict: 'A',
        link: function (element) {
            console.log('initialization code goes here.');
        }
    };
})
Run Code Online (Sandbox Code Playgroud)

但是,我不知道AngularJS相当于'on'是什么.如果可能的话,我想摆脱使用jQuery.

谢谢!

Kay*_*ave 6

Angular包含一个调用jqLit​​e的jquery子集.jqlite版本.on有这些约束:

on() - Does not support namespaces, selectors or eventData
Run Code Online (Sandbox Code Playgroud)

因此,我们可以使用Angular on,但与jQuery中的略有不同(即没有选择器).

指令的链接函数的第二个参数是指令应用于的元素.所以,虽然我们不能指定一个选择on,我们可以使用findelement参数,让您的DIV.然后我们可以链接on到那个结果.这给了我们以下链接功能:

link: function (scope,element,attrs) { 
         element.find('div').on('replace',  function (event) {
            console.log("got event: ",event);
         });
      };
Run Code Online (Sandbox Code Playgroud)

这是一个演示小提琴,其中我使用click而不是replace,因为它更容易显示.