0

単純な AJAX 呼び出しを実行して、アルバムのトラックを順不同のリストに追加しています。次のコードを使用して、2 回目のクリックでトラックを追加します。

window.app.views.AlbumView = Backbone.View.extend({...

      events: {
        'click .queue-add' : 'selectAlbum',
        'click .show-tracks' : 'showTracks',
        'click .hide-tracks' : 'hideTracks',
      },

      showTracks: function(){

        _this = this
        this.model.getTracks().forEach(function(track){
            _this.$el.find('.tracks').append("<li>"+track.attributes.title+"</li>");
        });
      },

明らかに、最初のクリックに間に合うようにトラックが取得されていなかったので、次のように showTracks メソッドにコールバック関数を追加しました。

  showTracks: function(){

    _this = this
    this.model.getTracks({
      success: function(tracks){
        console.log(tracks);
        tracks.forEach(function(track){
        _this.$el.find('.tracks').append("<li>"+track.attributes.title+"</li>");
        });
      }
    });
  },

それでも、ブロックと console.log(tracks); には入りません。コンソールには何も表示されません。

ここでのヒントは本当に素晴らしいでしょう、ありがとう!!

app.models.Album = Backbone.Model.extend({

  ....

  getTracks: function() {
    this.tracks.fetch();
    return this.tracks
  },

  ....
});
4

1 に答える 1