0

コレクションをテンプレートに渡す前に、コレクションを並べ替えたいと思います。ビューのレンダリング機能で使用します

CollectionForTelplate : this.Collection

私は次のようにフェッチを行います

var self = this;
//fetch done here
if (Collection.length > 0) {
    _.each(Collection, function(Model) {
        JSON.stringify(Model);
    }, this);
};
self.Collection = Collection;
self.render;
  1. コレクションをテンプレートに渡す方法は他にありますか?
  2. Model.nameなど、モデルの文字列フィールドに基づいてコレクションをどのように並べ替えますか?コレクションにコンパレーターを書いて、ビューの並べ替え機能を試してみましたが、残念ながら; それは私にはうまくいきません
4

2 に答える 2

1

ドキュメントで次のように定義されているCollectioncompatarator関数を実装します

コンパレータを定義すると、コレクションをソート順に維持するために使用されます。

そうすれば、追加、削除などの後、コレクションは自動的にソートされた順序で保持されます。次のように実装できます。sort

comparator: function(model1, model2) {
  if (model1 comes before model 2) {
    return -1;
  } else if (model1 is equal to model 2) {
    return 0;
  } else { // model1 comes after model 2
    return 1;
  }
}

またsortBy

comparator: function(model) {
  // Return some numeral or string attribute and it will be ordered by it
  // == smaller numbers come first / strings are sorted into alphabet order
  return model.get('someAttribute');
}

お役に立てれば!

于 2012-08-17T12:43:05.983 に答える
0

コレクションをテンプレートに渡す方法は他にありますか?

はい、コレクションには があるtoJSON() methodので、次のようなことが簡単にできます

render: function() {
  this._template({list: this.toJSON()}); //assuming your template is already compiled
  return this;
}

Model.name など、モデルの文字列フィールドに基づいてコレクションをどのように並べ替えますか? コレクションにコンパレータを書き、ビューに並べ替え関数を書き込もうとしましたが、残念ながら; それは私にはうまくいきません

コレクションにコンパレーター関数を定義するだけで、それ自体をソートしたままにすることができます。ドキュメントに記載されている例を次に示します

chapters.comparator = function(chapter) {
  return chapter.get("page");
};
于 2012-08-17T13:29:08.393 に答える