我是angularJS的新手,并不完全理解事件监听器和内存shizzle。所以当我有一个指令,用于多个元素,即设置一个窗口调整大小eventlistener时会发生什么。当设置此指令时,20个元素是窗口事件:
设置20次
设置一次因为函数已经准备好了。
我很害怕使用了大量内存,我可能希望根据窗口视口使用它来更改图像src ....
angular.module('log').directive(
"log",['$window', '$http', function($window, $http) {
return ({
link: function link( $scope, element, attributes ) {
var logFunc = function logFunc() {
console.log(
'I want to change the src attribute,'
+ ' depending on viewport, by using'
+ ' element.src = attributes.src1024'
);
};
angular.element($window).bind('resize', logFunc);
}
});
}]
);
<img src="" log data-src1024="img/1024/some-image.jpg" />
<img src="" log data-src1024="img/1024/some-image.jpg" />
<img src="" log data-src1024="img/1024/some-image.jpg" />
<img src="" log data-src1024="img/1024/some-image.jpg" />
答案 0 :(得分:0)
https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
多个相同的事件监听器
如果在具有相同参数的同一EventTarget上注册了多个相同的EventListener,则会丢弃重复的实例。它们不会导致EventListener被调用两次,并且由于重复项被丢弃,因此不需要使用removeEventListener方法手动删除它们。