javascript - 在 Backbone View 中处理图像错误事件

标签 javascript dom backbone.js backbone-events

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

基于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 的更改移到 View 中的单独方法中,该方法将被调用,但图像不会更改。

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

我在这里缺少什么?

最佳答案

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

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

在您的 handleMissingImage 中你说的功能:

i = $(evt.currentTarget);

所以i是一个 jQuery 对象,而不是原始 DOM 元素。这意味着您想说 i.attr('src', ...)更改 src属性或不费心包装 evt.currentTarget完全没有。

关于javascript - 在 Backbone View 中处理图像错误事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19844999/

相关文章:

javascript - 网络 Storm : "Cannot Resolve Directory"

javascript - 如何从 Backbone Controller 执行 angularJS Controller 中的函数

javascript - 我可以用 es6 的 extend 关键字替换 util.inherits 吗?

javascript - 在javascript中如何动态获取对象的嵌套属性

javascript - 在 Leaflet.Routing.Control 中设置语言选项

node.js - 早午餐:无法从 "initialize"找到模块 "/"

javascript - View 渲染 - backbone.js

dom - 在 DOM 突变事件上启动 FocusManager.parse_for_input

javascript - 是否可以使用 TypeScript 将 HTML 中的 div 设为 "Pre-render"?

javascript - createElement(...) 和 createElementNS ('http://www.w3.org/1999/xhtml' , ...) 之间有什么区别