2

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

onerror不会冒泡,所以我不能使用events: { 'error img' : 'imgEvent_' }.

我怎样才能将它绑定到类似的东西this.el.querySelector('img').on('error, imgEvent_, this);

请不要使用内联 HTML。

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

我这样做了:

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

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

4

2 回答 2

4

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

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

意思是这样的:

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

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

我建议你自己绑定它:

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

PS对不起我的英语。

于 2013-03-27T20:02:11.643 回答
1

您可以从提供给错误函数的第一个参数的目标属性中引用图像元素。您可以使用Underscore 的 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 的 bindAll 方法

_.bindAll(this, 'myFunction_');
this.el.queryelector('img').onerror = this.myFunction_;
于 2015-11-30T15:27:59.880 回答