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