2013-02-22 49 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等),你可以在其中追加每个模型视图。

所以,最后你得看看。一个充当集合的容器,负责处理用户的选择。然后您有另一种视图来呈现集合中的单个模型。该视图必须使用可以使用的模板。在迭代集合的主视图上,根据用户的决定使用不同的模板为每个模型创建一个新的视图实例,以便在容器中追加。