Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用指令加载元素的事件_Javascript_Jquery_Html_Angularjs - Fatal编程技术网

Javascript 使用指令加载元素的事件

Javascript 使用指令加载元素的事件,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,假设您在angularJS中创建了一个带有属性限制的新指令,比如说my directive。 假设具有以下HTML代码: <img src="..." my-directive /> 现在, 我想知道这些信息,因为我想了解在指令的代码中拦截加载事件的效果。正如我的评论所提到的,您可能希望使用预编译链接函数,但也可以使用ng src而不是本机src属性来帮助您,允许angular将自身插入到过程中。然后,您可以在编译之前执行拦截,如下所示: module.directive('i

假设您在angularJS中创建了一个带有属性限制的新指令,比如说
my directive
。 假设具有以下HTML代码:

<img src="..." my-directive />

现在,


我想知道这些信息,因为我想了解在指令的代码中拦截加载事件的效果。

正如我的评论所提到的,您可能希望使用预编译链接函数,但也可以使用
ng src
而不是本机
src
属性来帮助您,允许angular将自身插入到过程中。然后,您可以在编译之前执行拦截,如下所示:

module.directive('interceptImg',function(){

    //other functions on your directive like template and controller

    compile:{
        return: {
            pre: function preLink(scope, iElement, iAttrs, controller){
                //you can listen/bind your events here by accessing iElement
            }
        }
    }
})

签出

DOM加载事件如何知道Angular?@BenjaminGruenbaum它不必知道,Angular正是出于这个原因将DOM编译为一个多阶段过程。OP。。。您需要在指令中使用预链接函数,而不是普通链接:。。。所以你实际上需要定义两者。读到这里:@BrianVanderbusch这是一个反问句,这样OP就可以自己得出结论:)对不起,我误导了你,这不是我的本意。谢谢你的澄清。尽管考虑…堆栈溢出的目的不是通过首先提供答案,然后提供智慧来帮助提问者学习吗?虽然在这种情况下。。。我明白你的意思。使用advanced Angular,了解DOM和Angular之间的关系以及两者的生命周期是非常重要的。@BrianVanderbusch谢谢!我不知道
post-link
pre-link
。如果我使用link,例如img标记,那么在执行代码时,我可以确保图像数据已加载并准备好进行操作?所以没有理由拦截加载事件?