バックボーン ビューで使用されるアンダースコア テンプレート内に、画像があります。エラーイベントに添付して、元の画像が見つからない場合は画像ソースを変更しようとしています。
この同様の質問に基づいて、次のアプローチを取りました。
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」が表示されますが、画像は表示されません。上記の最初のアプローチがうまく機能するため、それが存在することを知っています。
ここで何が欠けていますか?