作成中のアプリにお気に入りを追加しようとしています。
基本的なセットアップには、「概念」のコレクションを持つユーザーが含まれます。テキスト フィールドを送信することで、コレクションに新しいコンセプトを提案できます。
ユーザーは、Gmail や他の何百万ものアプリとまったく同じように、小さな星をクリックしてコンセプトを「お気に入り」にすることもできます。お気に入りのコンセプトはコンセプト コレクションの一番上に固定され、新しく作成されたコンセプトはその下に表示されます。
コンセプトをお気に入りにするには、コンセプトの ID を に POST する必要があり"/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")
私の質問は、クライアント側でお気に入りのコンセプトとお気に入りでないコンセプトを管理する方法についてです。
お気に入りのコンセプト用とそうでないコンセプト用の 2 つの別個のコレクションを作成する必要がありますか? それとも、1 つのコレクションに固執する必要がありますか?
コレクションにConcept
モデルがあるとしたらFavouritedConcepts
class FavouritedConcepts extends Backbone.Collection
url: "/favourited_concetpts"
model: Concept
favourited_concepts#index がお気に入りの概念のみにスコープを設定するのは自然なことなので、そのコレクションを介して概念をうまくリストできます。
ただし、概念はConceptsController
atによって破棄され、コレクション内にある でBackbone"/concepts"
を呼び出そうとすると、誤って にリクエストが送信されます。model.destroy()
Concept
FavouritedConcepts
DELETE
"/favourited_concepts"
解決策は、1 つのコンセプト コレクションだけに固執し、favourite
ブール属性を各コンセプトにマッシュアップし、コンパレーターを定義して、お気に入りのコンセプトをリストの一番上に固定することです。ただし、これを行うとビューレイヤーの柔軟性が失われる気がします。FavouritedConceps
コレクションからのイベントをリッスンするビューを持つことはできません。
この機能を実装する際に取るべき最善のアプローチは何ですか?