【问题标题】:img load event not firingimg 加载事件未触发
【发布时间】:2016-10-27 08:30:14
【问题描述】:

我必须遵循我正在尝试为 img 标签设置 onload 侦听器的指令。在该链接函数中,我以编程方式生成 img src。

angular.module('test', [])
.directive('imgTest', function() {
  return {
    restrict: 'A',
    template: '<img ng-src="{{imgSrc}}"></img>',
      link: function(scope, elem) {
      elem.on('load', function() {
        console.log('image loaded');
      });

      scope.imgSrc = "someurl?token=" + getAccessToken();  
    }
  };
});

但是 onload 函数没有触发。请放轻松,我确定我在做一些非常愚蠢的事情:)

【问题讨论】:

    标签: javascript angularjs angularjs-directive


    【解决方案1】:

    “elem”不是图像。如果你像下面这样使用你的指令,

    <div img-test />
    

    elem 是“div”而不是图像

    【讨论】:

      【解决方案2】:

      elem.on('load') 是一个 jQuery 风格的事件监听器。看起来你没有像 elem 这样的 jQuery 对象——它直接来自 Angular。所以试试:

      $(elem).on('load', function () {})
      

      elem.addEventListener('load', function() {});
      

      【讨论】:

      • 谢谢@Harangue。仍然没有得到加载事件。正如我在页面上看到的那样,我的图像确实正在加载。
      • @lostintranslation 我也很确定您应该在负载侦听器之前设置“src”。不确定这是否会有所作为。
      • 一直认为在触发可能触发侦听器的事件之前设置侦听器是最佳实践。不管怎样,load even 仍然没有触发。
      • @lostintranslation 嗯,我想我唯一的另一个怀疑是它是模板指令的奇怪行为。有什么方法可以切换到基于属性的指令,例如stackoverflow.com/a/26781900/1008741
      猜你喜欢
      • 1970-01-01
      • 2013-11-23
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 2014-01-01
      相关资源
      最近更新 更多