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

uhry853o  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(122)

我想将一个事件绑定到视图中图像的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元素......我仍然需要访问myFunction_所在的this。我该如何解决这个问题?

dxxyhpgq

dxxyhpgq1#

您无法在事件Map中绑定错误,因为此处Backbone.js将事件从文档委托给指定的元素(http://api.jquery.com/delegate/):

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

意思大概是这样的:

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

文档出现错误?是否可以将其委托给img?
我建议您自己绑定:

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

附言:对不起,我的英语。

tgabmvqs

tgabmvqs2#

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

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的bindAll方法。

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

相关问题