在 Backbone.js 视图中处理图像错误事件

i7uaboj4  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(120)

在一个由 Backbone.js 视图使用的下划线模板中,我有一个图像。我试图附加到错误事件,并更改图像源,如果没有找到原始图像。
基于this similar question,我采用了以下方法:

render: function() { 
    var self = this;

    this.$el.html( this.template( { person: this.model.toJSON() } ) ); 

    this.$el.find('img.employee-image').on('error', function(evt) { this.src = "assets/images/_noimage.gif"; });

    return this;
}

这非常好用,但是如果我试图将src的更改移到视图中的一个单独的方法,则会调用该方法,但图像不会更改。

render: function() { 
    var self = this;

    this.$el.html( this.template( { person: this.model.toJSON() } ) ); 

    this.$el.find('img.employee-image').on('error', function(evt) { self.handleMissingImage(evt); });

    return this;
},

handleMissingImage: function(evt) {
    // This by itself did not work.
    // this.src = "assets/images/_noimage.gif";

    var i = $(evt.currentTarget);
    i.src = "assets/images/_noimage.gif";
    console.log(i.src);
}

注销src会显示“assets/images/_noimage.gif”,但不会显示图像。我知道它存在,因为上面概述的第一种方法工作正常。
我错过了什么?

hfyxw5xn

hfyxw5xn1#

我想你的问题就在这里:

i.src = "assets/images/_noimage.gif";

handleMissingImage函数中,您可以说:

i = $(evt.currentTarget);

因此i是一个jQuery对象,而不是原始的DOM元素,这意味着您希望使用i.attr('src', ...)来更改src属性,或者根本不需要 Package evt.currentTarget

相关问题