簡體   English   中英

在主干視圖中處理圖像錯誤事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM