我想将一个事件绑定到我视图中图像的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_
。我该如何解决这个问题?
答案 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);
_.bindAll(this, 'myFunction_');
this.el.queryelector('img').onerror = this.myFunction_;