如何将onerror绑定到Backbone视图中的图像?

时间:2013-03-27 19:55:08

标签: javascript javascript-events backbone.js backbone-views

我想将一个事件绑定到我视图中图像的onerror

onerror没有冒泡,所以我无法使用events: { 'error img' : 'imgEvent_' }

如何将其绑定到this.el.querySelector('img').on('error, imgEvent_, this);

之类的内容

请不要内联HTML。

谢谢!

忘了提...我不使用任何DOM库,所以没有jQuery等。

我这样做了:

this.el.queryelector('img').onerror = this.myFunction_;

我现在的问题是,在this.myFunction_内,this实际上是img元素...我仍然需要访问this所在的myFunction_ 。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

你不能在事件映射中绑定onerror,因为这里Backbone.js将事件从文档委托给指定的元素(http://api.jquery.com/delegate/):

events: { 'error img': 'callaback' }

意思是这样:

$(document).on('error', 'img', callback); 

有文件错误吗?它可以委托给img吗?

我建议你自己绑定它:

this.$('img').on('error', callback);

P.S。对不起我的英语。

答案 1 :(得分:1)

您可以从first argument given to the error function的target属性引用image元素。您可以使用Underscore's bind method将方法绑定到视图。

this.el.queryelector('img').onerror = _.bind(function(error){
    var img = error.target;
    this.myFunction_();
}, this);

如果您只需要myFunction始终引用视图而不关心图像或其他任何内容,您可以使用

this.el.queryelector('img').onerror = _.bind(this.myFunction_, this);

Underscore's bindAll method

_.bindAll(this, 'myFunction_');
this.el.queryelector('img').onerror = this.myFunction_;