Backbone: рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдореЙрдбрд▓ рдХреЗ рд░рд┐рд╡рд░реНрд╕ рд╕реЙрд░реНрдЯ рдХреНрд░рдо

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЕрдкреНрд░реИрд▓ 2011  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jashkenas/backbone

рд╣реЗ,

рд╕реЙрд░реНрдЯ рдХреНрд░рдо рдХреЛ рдЙрд▓рдЯрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ? рдореЗрд░реЗ рддреБрд▓рдирд┐рддреНрд░ рдЖрдЬ рддрдХ рд╕рднреА рдореЙрдбрд▓реЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ,
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рдЙрд▓реНрдЯреЗ рдХреНрд░рдо рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред toArray() рдФрд░ reverse() рдмрд╣реБрдд рдмрджрд╕реВрд░рдд рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдореБрдЭреЗ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдпрд╛рдж рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реАрдврд╝ рдХреА рд╣рдбреНрдбреА рдХреЗ рдореЙрдбрд▓ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░реВрдБрдЧрд╛
рддреБрд▓рдирд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВред

рдЪрд┐рдпрд░реНрд╕,
рдбреИрдирд┐рдпрд▓

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдк рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

collection.set(collection.models.reverse(), {sort: false});

рд╕рднреА 12 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА рддреБрд▓рдирд╛ рдХреА рдХрд╕реМрдЯреА рд╕реЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рд▓реМрдЯрд╛рдПрдВред

comparator : function(model) {
  return -model.get('date');
}

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдкрд░ рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рд╕реЙрд░реНрдЯ рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╣реИрдВ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдИ рджрд┐рдирд╛рдВрдХ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ?
рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдЗрд╕рдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред

comparator : function(model) {
  return -new Date(model.get('date'));
}

рдпрд╣ рдХреЗрд╡рд▓ рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд░рддреЗ рд╣реИрдВ -), рд▓реЗрдХрд┐рди рдордирдорд╛рдиреЗ рддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИрдВ, рдореИрдВрдиреЗ рдорд╛рдирд╛ рдХрд┐ рдЖрдк рдЕрднреА рднреА рддрд╛рд░реАрдЦреЛрдВ (рдУрдкреА рдХреА рддрд░рд╣) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рдереЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐ рдЖрдкрдХреА рддрд╛рд░реАрдЦ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдереАред рдореЗрд░реА рдЧрд▓рддреА рддреЛ :)ред

рдмреИрдХрдмреЛрди (рдФрд░ рд╡рд░реНрддрдорд╛рди рдорд╛рд╕реНрдЯрд░) рдХрд╛ рдЕрдЧрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП sort рдЖрджреЗрд╢реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ (рдХреЗрд╡рд▓ sortBy рдмрдЬрд╛рдп), рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рдкрд╛рдПрдВрдЧреЗред

comparator: function(a, b) {
  ...
}

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдПрдХ рдХреНрд░рдо рдореЗрдВ, рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рд░рд┐рд╡рд░реНрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдк рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ? рдЖрдкрдХреЗ рддреБрд▓рдирд┐рддреНрд░ рдФрд░ рд╕реЙрд░реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗрд╡рд▓ рдПрдХ рджрд┐рд╢рд╛ рдпрд╛ рджреВрд╕рд░реЗ рдХреЛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдБ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред () () рдЬрд▓реНрджреА рд╕реЗ рд╕реЙрд░реНрдЯ рджрд┐рд╢рд╛рдУрдВ (рдЖрд░реЛрд╣реА рдмрдирд╛рдо рдЕрд╡рд░реЛрд╣реА) рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдПред

@ elwayman02 рдЖрдк рдХреЗрд╡рд▓ 2 рд╕рдВрдЧреНрд░рд╣ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рдВрдЧреНрд░рд╣ # рдХреНрд▓реЛрди рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ)

рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ ... рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд▓реЗ рд▓реАрдЬрд┐рдП рдЬрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣ рдбреЗрдЯрд╛ рдХреЗ рдЧреНрд░рд┐рдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдХрдИ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдЫрд╛рдВрдЯреВрдВрдЧрд╛ред рдпрд╣ рдбреЗрдЯрд╛ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдПрдХ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рд╣рдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╣реЗрд░рдлреЗрд░ рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдХрдИ рддреБрд▓рдирд┐рддреНрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рд╣реИрдВ, рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡реИрдк рдХрд┐рдпрд╛ рд╣реИред

var Collection = Backbone.Collection.extend({
  comparators: {
    a: function () {},
    b: function () {}
  },

  setComparator: function (key) {
    this.comparator = this.comparators[key];
    return this;
  }
});
var collection = new Collection();
collection.setComparator('a').sort();
collection.setComparator('b').sort();

рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ рдХрд┐ рдмреИрдХрдмреЛрди рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рд░рд┐рд╡рд░реНрд╕ () рдкрджреНрдзрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЖрдк рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

collection.set(collection.models.reverse(), {sort: false});
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

tribalvibes picture tribalvibes  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rafde picture rafde  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gfranko picture gfranko  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

PavelKoroteev picture PavelKoroteev  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

omenking picture omenking  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ