Working with an image error event in a Backbone view
在Backbone 视图使用的Underscore模板中,我有一个图像。我试图附加到错误事件并在未找到原始图像的情况下更改图像源。
基于这个类似的问题,我采用了以下方法:
1 2 3 4 5 6 7 8 9 | 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的更改移动到视图中的单独方法,则将调用该方法,但图像不会更改。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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 ",但是图像不会出现。我知道它的存在是因为上面概述的第一种方法很好用。
我在这里想念什么?
我认为您的问题就在这里:
1 | i.src ="assets/images/_noimage.gif"; |
在您的
1 | i = $(evt.currentTarget); |
因此