[英]Working with an image error event in a Backbone 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) { this.src = "assets/images/_noimage.gif"; });
return this;
}
這可以很好地工作,但是如果我嘗試將src的更改移至視圖中的單獨方法,則將調用該方法,但圖像不會更改。
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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.