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

用户名

我有一个指令,并且它的模板内是一个<img>元素,我想执行一个在指令范围内的自定义方法:

<my-directive>
    <!-- my directives template -->
    <p>...</p>
    <img onload="myScopeMethod()">
    <p>...</p>
    <!-- my directives template -->
</my-directive>

我发现这个从url获取远程图像的宽度高度,但这仅在将im应用于对<img>元素有效的指令时才有效

该指令的目的是显示一个小部件,该部件允许我操纵图像(通过拖动滑块缩放图像),但是我不知何故需要获得其原始大小。

我怎样才能从我的控制器范围执行该方法?

大豆

通常,您可能希望将负载处理程序功能从模板本身中取出,并将其保留在链接功能中。从那里开始,它取决于您的指令以及是否使用隔离范围,继承的范围或与父范围相同的范围。

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

如果您没有作用域键或作用域键,并且将其设置为布尔值,则说明您使用的是相同作用域或继承的作用域。在这种情况下,您需要做的就是调用$ scope.originalScopeMethod(),它将在范围上调用它,或者在原型链中找到它。

这是使用三种不同方案的示例底部的表是从“主”控制器作用域提供的,而较小的数字是从指令作用域提供的。

如果是我,我可能会选择隔离范围或继承范围,因此您可以更轻松地分别跟踪多个图像。在我的示例中,共享作用域版本仅适用于单个图像,但是如果您确实需要,可以使其与数组或哈希一起使用。

让我知道我是否以任何方式误解了您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章