在我的简单项目中,我有两个视图 - 一个行项目视图(BrandView)和应用程序视图(AppView)。我附加了一些允许选择多个项目的函数:
更具体地说,我希望AppView知道选择了多少个项目,因此如果选择了多个项目,我会显示一个多选菜单。
var BrandView = Backbone.View.extend({ ...some code... toggle_select: function() { this.model.selected = !this.model.selected; if(this.model.selected) $(this.el).addClass('selected'); else $(this.el).removeClass('selected'); return this; } });问题是,我想知道有多少项被选中。在这种情况下,选择不会影响模型,因此不会触发任何事件。从MVC概念上理解,视图不应直接与其他视图通信。那么AppView如何知道BrandViews中有项目被选择?
var AppView = Backbone.View.extend({ ...some code... delete_selected: function() { _.each(Brands.selected(), function(model){ model.delete_selected(); }); return false; }, });
更具体地说,我希望AppView知道选择了多少个项目,因此如果选择了多个项目,我会显示一个多选菜单。
$(this.el).toggleClass("selected")
。或者更简短地说,this.model.selected = $(this.el).toggleClass('selected").hasClass("selected");
。 - Mark Rushakoff