2013-02-22 52 views
1

有一個Bckabone查看商品:模板切換視圖的集合。 Backbone.js的

Product = Backbone.View.extend({ 
    templateBasic: _.template($("#pcard-basic").html()), 
    templateFull: _.template($("#pcard-full").html()), 
    initialize: function() { 
     this.render(this.templateBasic); 
    }, 
// ... 

這裏是我的草案:http://jsfiddle.net/challenger/xQkeP/73

如何隱藏/顯示其它視圖時,其中一個被選擇/未選中,以便查看完整模板,以便它可以擴展到一個完整的容器寬度。

我應該爲整個集合使用一個視圖嗎?我如何處理事件處理?

謝謝!

編輯

這是我的最終草案:http://jsfiddle.net/challenger/xQkeP/

但我仍然不知道我是否能實現更優雅的方式相同的結果?我只是覺得,躲在兄弟姐妹不解決它的最好辦法:

viewBasic: function(e) { 
    e.preventDefault(); 
    this.render(this.templateBasic); 
    if(this.switchedToFull) { 
     this.$el.siblings().show(); 
     this.switchedToFull = false; 
    } 
}, 
viewFull: function(e) { 
    e.preventDefault(); 
    this.render(this.templateFull); 
    this.$el.siblings().hide(); 
    this.switchedToFull = true; 
} 
+0

即時通訊不知道你在問什麼。我無法得到你的小提琴的全部意圖。 – 2013-02-22 13:11:51

+0

我想顯示一個產品視圖的集合,其中每個產品視圖都可以使用其完整模板進行查看。 – lexeme 2013-02-22 13:20:39

+0

我也在努力理解你的意圖。從你的小提琴'showFull'和'showBasic'正在工作。什麼不起作用? – juco 2013-02-22 13:29:06

回答

0

如果我理解正確的話,你想顯示兩種不同的方式您的收藏裏面所有的車型,留下的是如何將它們呈現給選擇用戶,對吧?

您可以執行此操作的一種方法是創建用戶選擇的主視圖。當用戶決定應該從該視圖中觸發一個方法,該方法使用不同的模板呈現集合中的每個模型。在你的主視圖上,你應該有一個容器(table,div,ul等),你可以在其中追加每個模型視圖。

所以,最後你得看看。一個充當集合的容器,負責處理用戶的選擇。然後您有另一種視圖來呈現集合中的單個模型。該視圖必須使用可以使用的模板。在迭代集合的主視圖上,根據用戶的決定使用不同的模板爲每個模型創建一個新的視圖實例,以便在容器中追加。