Javascript 创建DOM元素时使用AngularJS进行检测

Javascript 创建DOM元素时使用AngularJS进行检测,javascript,angularjs,Javascript,Angularjs,我有一个第三方Javascript库,它在运行时将DOM元素动态添加到一个div中。我正在寻找一种方法,在AngularJS(Angular1)中检测该元素何时被创建,因此我无法执行某些特定操作 <div ng-controller="myCtrl"> <div class="thisElementWasAddedOnRuntime"></div> </div> 我知道有一些JS库可以检测特定元素的创建。但是我不想只为这个案例包含整

我有一个第三方Javascript库,它在运行时将DOM元素动态添加到一个div中。我正在寻找一种方法,在AngularJS(Angular1)中检测该元素何时被创建,因此我无法执行某些特定操作

<div ng-controller="myCtrl">
    <div class="thisElementWasAddedOnRuntime"></div>
</div> 


我知道有一些JS库可以检测特定元素的创建。但是我不想只为这个案例包含整个图书馆

您需要创建一个自定义指令以使其正常工作。请看一下这个简单的。您可以访问指令
链接
函数中的元素。您应该在元素上绑定第三方库。指令是DOM元素上的标记,它告诉AngularJS的HTML编译器将指定的行为附加到该DOM元素。你也可以看一看

看法
观察者dom角度变化的正确方法是指令的链接

link:function(scope,ele,attr){
        if (MutationObserver) {
            observer = new MutationObserver(function (mutations) {
               console.log('changed');
            });

            observer.observe(ele[0], {
                childList: true,
                subtree: true
            });
        } else {
            ele[0].addEventListener('DOMSubtreeModified', function (evt) {
               console.log('changed');
            }, false);
        }
      }

试试这个:

这不是使用角度的正确方法。如果你使用模型来驱动/导出/创建视图,那么你不需要依赖视图来做任何事情,模型就是真理的源泉。学习使用框架中内置的指令来实现您的目标或编写自定义指令。您使用的是哪一个第三方库?我知道。然而,我正在开发一个Web应用程序,我面临着这个问题。@lin这是一个供应商定制的构建库。Jap,我去清理代码,按照你的方式完成了。谢谢
var myApp = angular.module('myApp', []);

myApp.controller('MyCtrl', function($scope) {});

myApp.directive('myDirective', function() {
  return {
    restrit: 'A',
    link: function(scope, element, attrs) {
        // use element here to bind your lib
        console.log(element);
    }
  }
});
link:function(scope,ele,attr){
        if (MutationObserver) {
            observer = new MutationObserver(function (mutations) {
               console.log('changed');
            });

            observer.observe(ele[0], {
                childList: true,
                subtree: true
            });
        } else {
            ele[0].addEventListener('DOMSubtreeModified', function (evt) {
               console.log('changed');
            }, false);
        }
      }