我正在嘗試向我正在構建的應用添加收藏。使用Backbone和Rails實施帶星標的收視系統
基本設置涉及擁有「概念」集合的用戶。他們可以通過提交文本字段向集合中提出新概念。
用戶也可以通過點擊一個小星星來「喜歡」概念,就像在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#索引範圍的概念,只有那些被收藏最多。
然而,概念是通過在ConceptsController
破壞"/concepts"
,如果我嘗試調用骨幹model.destroy()
上Concept
駐留在FavouritedConcepts
集合,然後就會誤發送DELETE
請求"/favourited_concepts"
。
解決方案可能只是堅持一個概念集合,將一個favourite
布爾屬性混合到每個概念上,並定義一個比較器來強制收藏的概念堅持列表的頂部。但是,通過這樣做,我覺得我的視圖層會失去一些靈活性。我無法收聽來自FavouritedConceps
收藏的活動。
執行此功能時採取的最佳方法是什麼?
這是我最終選擇做的。 –