0

我想基於一個觀點流派顯示多個音樂藝術家獲取集合。所以,首先我有我的菜單選項卡:BackboneJS基於參數

<a data-name="hiphop" class="genre">HipHop</a> 
<a data-name="rock" class="genre">Rock</a> 
<a data-name="alternative" class="genre">Alternative</a> 
<a data-name="jazz" class="genre">Jazz</a> 

然後我genre.js包含:

Genres.Collection = Backbone.Collection.extend({ 
    url: function() { 
     return 'path to my json'; 
    }, 
    parse: function(response, genre){ 
     return response.data.genres[genre]; 
     // when I do: return response.data.genres.rock; 
     // I get all artists from the genre "rock". 
     // but I want the response to be based on the variable "genre" 
    }   
}); 

然後,在我的mainView.js:

events: { 
    'click .genre' : 'genre' 
}, 

genre: function(event, genre){ 
    event.preventDefault(); 
    // get the clicked genre 
    var genreName = $(event.target).data('name'); 
    var genresCollection = new Genres.Collection({genre:genreName }); 
    genresCollection.fetch(); 
    this.insertView('.genres', new Genres.View({collection: genresCollection}));      
}, 

但不管我點擊的類型,我得到一個空的集合。有人可以告訴我我在這裏做錯了什麼嗎?

非常感謝!

回答

2

選項不是默認存儲的,但您可以覆蓋您的initialize方法以提供此功能。然後,您將在parse方法中使用此存儲的值:

Genres.Collection = Backbone.Collection.extend({ 
    url: function() { 
     return 'path to my json'; 
    }, 
    initialize: function(opts) { 
     opts = opts || {}; 
     this.genre = opts.genre || 'rock'; 
    }, 
    parse: function(response){ 
     return response.data.genres[this.genre]; 
    }   
}); 
+0

謝謝!太棒了!也多虧了@Kim Gysen – Steve 2015-02-10 13:42:09

+0

以前的答案,如果我想例如設置類型爲「岩石」作爲默認的是什麼? – Steve 2015-02-10 13:44:49

+0

你會爲你的流派屬性定義一個默認的地方。我已經添加了一個示例 – nikoshr 2015-02-10 13:47:07

1

您需要定義一個成功回調。請嘗試:

var genresCollection = new Genres.Collection(); 
genresCollection.fetch({ 
    data: { 
     genre: genreName 
    }, 
    success: (function (coll_genres) { 
     console.log(coll_genres.toJSON()); 
    }), 
    error: (function (e) { 
     console.log(e); 
    }) 
}); 
+0

ok!好吧,我進入成功回調,但仍然沒有數據,但... ... -/ – Steve 2015-02-10 13:37:41

+0

根據上面的意見,這似乎是你的問題已經解決。 – Trace 2015-02-10 14:31:42