【问题标题】:Working with an image error event in a Backbone view在主干视图中处理图像错误事件
【发布时间】:2013-11-07 19:32:23
【问题描述】:

在 Backbone 视图使用的下划线模板中,我有一个图像。如果找不到原始图像,我正在尝试附加到错误事件并更改图像源。

基于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”,但图像不会出现。我知道它存在,因为上面概述的第一种方法效果很好。

我在这里错过了什么?

【问题讨论】:

    标签: javascript dom backbone.js backbone-events


    【解决方案1】:

    我认为你的问题就在这里:

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

    在你的handleMissingImage 函数中你说:

    i = $(evt.currentTarget);
    

    所以i 是一个jQuery 对象,而不是一个原始的DOM 元素。这意味着您想说i.attr('src', ...) 来更改src 属性,或者根本不用包装evt.currentTarget

    【讨论】:

    • 我讨厌这样的愚蠢错误。谢谢您的帮助!我选择了:evt.currentTarget.src = "assets/images/_noimage.gif";
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    相关资源
    最近更新 更多