2

バックボーンを使用してモデルを任意のビューで順番に保持する基本的な方法は何ですか? 私はいくつかの考えを持っていますが、それは完全には明らかではありません。

「created_at」というフィールドで整理したいと思います。コレクションにコンパレータ関数を提供する機能があることは知っていますが、それがどのように機能するかはわかりません。

また、コレクション内のこの順序が常に (リスト内の) ビューに反映されるようにしたいと考えています。しかし、モデルのどこに結びついているのか正確にはわかりません。インデックス属性の変更を探してから、一致するように更新すると思いますか?

助けや説明をありがとう!

4

1 に答える 1

4

コレクションを定義するときは、コンパレータも定義します。私は最近このようにしました:

        comparators: {
            id: function(animal) {
              return Number(animal.get("id"));
            },

            d_id: function(animal) {
              return -Number(animal.get("id")); // descending
            },

            name: function(animal) {
              return animal.get("name");
            },

            d_name: function(animal) {
              return String.fromCharCode.apply(String, _.map(animal.get("name").split(""), function (c) {
                    return 0xffff - c.charCodeAt();
                    })
              );
            },
        }

これらは、コレクションコード内で定義しました。

次に、コレクションビューをレンダリングする際に、これを実行しました(これは、コレクション全体をレンダリングするビュー内にありますinitialize()

this.collection = new MyCollection();
this.collection.comparator = Collection.comparators[// here I put 'id' or 'd_id' etc. ];
this.collection.sort();

このコードはビューの初期化に含まれているため、ビューを初期化するときにコンパレータを定義し、次のようなコンパレータの名前を渡すことができます。

var directory = new pageView("d_id");

そして、initialize(comparator_id)これを初期化でコードに渡すことができます。

this.collection = new MyCollection();
this.collection.comparator = Collection.comparators[comparator_id];
this.collection.sort();

そして、ビュー/ページのレンダリングと再レンダリングにコレクションを使用できます

編集:

これがBackboneのcollection.comparatorドキュメントであり、そのすぐ下に次の説明があります。sort()

基本的に、コンパレータは、プロパティを返すモデルまたは関数のプロパティ、または数値の場合は降順の負のプロパティ、または文字列またはここで示した例のように降順の逆の値にすることができます。

したがって、コンパレータは「id」、「name」、「-id」、「-name」などのプロパティを返します(文字列の場合、単に「負」にすることはできません。より複雑な関数を適用する必要があります。私が書いたように。)

于 2012-11-15T03:58:48.610 に答える