Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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 AngularJS如何从指令模板内捕获事件?_Javascript_Angularjs_Javascript Events_Event Handling_Angular Directive - Fatal编程技术网

Javascript AngularJS如何从指令模板内捕获事件?

Javascript AngularJS如何从指令模板内捕获事件?,javascript,angularjs,javascript-events,event-handling,angular-directive,Javascript,Angularjs,Javascript Events,Event Handling,Angular Directive,我有一个指令,它的模板中有一个元素,我想执行指令范围内的自定义方法: <my-directive> <!-- my directives template --> <p>...</p> <img onload="myScopeMethod()"> <p>...</p> <!-- my directives template --> </my-directi

我有一个指令,它的模板中有一个元素,我想执行指令范围内的自定义方法:

<my-directive>
    <!-- my directives template -->
    <p>...</p>
    <img onload="myScopeMethod()">
    <p>...</p>
    <!-- my directives template -->
</my-directive>
我发现了这一点,但这只有在我将其应用于对元素起作用的指令时才有效

该指令的目的是显示一个小部件,它允许我通过拖动滑块来操作图像缩放它,但我需要以某种方式获得它的原始大小


如何让它从我的控制器作用域执行方法?

您通常希望将load handler函数从模板本身中取出,并将其粘贴到链接函数中。从这里开始,它有点取决于您的指令,以及您使用的是隔离作用域、继承作用域还是与父作用域相同的作用域

如果您的指令定义对象中有一个范围键,并且它被设置为对象文字,那么您使用的是隔离范围。在这种情况下,您需要以某种方式传递它,最简单的方法是使用“&”选项

如果您没有范围键或范围键设置为布尔值,则使用相同的范围或继承的范围。在这种情况下,您只需调用$scope.originalScopeMethod,它就会在范围上调用它,或者在原型链中找到它

有三种不同的场景。底部的表格是从“主”控制器作用域输入的,而小数字是从指令作用域输入的

如果是我,我可能会选择隔离或继承范围,这样你就可以更容易地分别跟踪多个图像。我的示例中的共享作用域版本只适用于单个映像,但如果您真的需要,可以使用数组或散列


如果我以任何方式误解了你的问题,请告诉我。

嘿,谢谢你的长篇大论和很好的例子。老实说,我还没有完全理解代码,我会在今天或明天尝试一下,因为我有时间这样做。我很确定它在做我想做的事情,我只是还不能让它在我的项目中发挥作用。如果你想发布到目前为止你的指令,我可能会帮你指出正确的方向。