2016-05-04 6 views
0

Ajax呼び出しの成功でテンプレート内の画像を検索しようとしていますが、できません!ここでajax呼び出しの後にテンプレート内の要素を見つけることができません

は私のコードです:

class AvatarView extends Backbone.View 
    template: JST["backbone/templates/twitter_avatar"] 

    initialize:(options) -> 
    @user = options.user 

    render: => 
    @$el.html(@template({ 
     view_id: @cid 
     avatar_url: @user.avatar() || "src/image_not_found.png" 
    })) 
    @$el.find(".avatar").on('error', @_reloadAvatar) 

    _reloadAvatar: => 
    $.ajax 
     type: 'GET' 
     url: "/profiles/api/twitter/#{@user.social_network_id()}/avatar_url" 
     success: (response) => 
     if response.success 
      avatar_url = response.avatar_url 
     else 
      avatar_url = 'https://abs.twimg.com/sticky/default_profile_images/default_profile_0_normal.png' 
     @$el.find(".avatar").attr('src', avatar_url) # Here is the problem 

私はこのデバッグする場合:

  • を "これは"「AvatarViewのインスタンスと
  • @ $エルは空のdivで、できることですアバタークラスを見つける。ここで

テンプレートです:

<img src="<%= avatar_url %>" alt="avatar" class="avatar" id="avatar-image-<%= view_id %>"> 

私は私のDOMオブジェクトまたはそのような何かを失うてるように私は落ちた..

+0

なぜこのようなことが起こっているのかわかりませんが、 'onerror'コールバックで実際にユーザーのアバターとカルを変更するとどうなりますか? lレンダー機能をもう一度? – itdoesntwork

答えて

0

それが動作しない理由を私はまだ理解していないが、

_reloadAvatar:(event) => 
$.ajax 
    type: 'GET' 
    url: "/profiles/api/twitter/#{@user.social_network_id()}/avatar_url" 
    success: (response) => 
    if response.success 
     avatar_url = response.avatar_url 
    else 
     avatar_url = 'https://abs.twimg.com/sticky/default_profile_images/default_profile_0_normal.png' 
    @(event.target).attr('src', avatar_url) 
関連する問題