【发布时间】:2014-01-18 18:37:32
【问题描述】:
我在追求什么
我想为我网页上的图片创建一个ngLoad 指令。这是我的首选标记:
<img ng-src="{{ src }}" ng-load="onLoad()">
我有什么
现在,我有一个imgLoad 指令,在scope 中指定了ngLoad,如下所示:
var app = angular.module('app', []);
app.directive('imgLoad', [function() {
return {
restrict: 'A',
scope: {
loadHandler: '&ngLoad'
},
link: function (scope, element, attr) {
element.on('load', scope.loadHandler);
}
};
}]);
生成的标记是:
<img ng-src="{{ src }}" img-load ng-load="onLoad()">
编辑:我之前假设指令的名称(即imgLoad)需要与我的属性名称(即ngLoad)不同。不是这种情况。 解决方案是将我的指令命名为ngLoad。
需要改变的地方
我想摆脱imgLoad 属性。我希望ngLoad 能够工作,无论其他属性如何。
我已经看到的
我的实现基于:
- angularjs directive call function specified in attribute and pass an argument to it
- AngularJS - Image "onload" event
- AngularJS:introduction to directives 和 $compile documentation
非常感谢任何帮助!
【问题讨论】:
-
jsfiddle.net/7NyTN 这不起作用吗?为什么有 2 个指令?
-
@smk 我想你回答了我的问题。我假设指令的名称需要与范围属性不同。
-
因此,考虑到 OP 假设,这个问题没有意义。还不如去掉。
-
我仍然认为这个问题是一个很好的参考,尤其是对于那些刚开始写指令的人(比如我)。
-
我更新了我原来的帖子来解释我的假设。我希望@smk 将他的评论放入答案中。如果这在几天内没有发生,我可能会回答我自己的问题,并感谢他的解决方案
标签: javascript angularjs angularjs-directive