我正在尝试将收藏添加到我正在构建的应用程序中。
基本设置涉及拥有“概念”集合的用户。他们可以通过提交文本字段将新概念建议到集合中。
用户还可以通过点击小星星来“收藏”概念,就像在 Gmail 或其他一百万个应用程序中所做的那样。最喜欢的概念应该放在概念集合的顶部,从而使新创建的概念出现在它们的下方。
要收藏一个概念,我必须将该概念的 id 发布到"/favourites"
.
class ConceptView extends Backbone.View
events:
'click .empty-star' : 'favourite'
favourite: ->
@model.favourite()
class Concept extends Backbone.Model
favourite: ->
$.post("/favourites", { concept_id: @id }, "json")
我的问题是关于如何在客户端管理受欢迎和不受欢迎的概念。
我应该有两个单独的集合,一个用于收藏的概念,另一个用于非收藏的概念,还是应该尝试坚持一个收藏?
如果我要在一个集合中有一个Concept
模型FavouritedConcepts
class FavouritedConcepts extends Backbone.Collection
url: "/favourited_concetpts"
model: Concept
然后我可以通过该集合列出概念就好了,因为 favourited_concepts#index 很自然地将概念范围仅限于最喜欢的那些。
但是,概念会被ConceptsController
at破坏"/concepts"
,如果我尝试在位于集合中的model.destroy()
a上调用 Backbone,那么它将错误地向.Concept
FavouritedConcepts
DELETE
"/favourited_concepts"
解决方案可能是只坚持一个概念集合,将favourite
布尔属性混搭到每个概念上,并定义一个比较器以强制最喜欢的概念保持在列表的顶部。但是,我觉得这样做会在视图层中失去一些灵活性。我不能拥有监听FavouritedConceps
集合中事件的视图。
实现此功能时采取的最佳方法是什么?