Backbone: μ»¬λ ‰μ…˜μ—μ„œ λͺ¨λΈμ˜ μ—­ μ •λ ¬ μˆœμ„œ

에 λ§Œλ“  2011λ…„ 04μ›” 11일  Β·  12μ½”λ©˜νŠΈ  Β·  좜처: jashkenas/backbone

μ•Ό,

μ»¬λ ‰μ…˜μ˜ μ •λ ¬ μˆœμ„œλ₯Ό λ°”κΎΈλŠ” κ°€μž₯ 쒋은 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? λ‚΄ λΉ„κ΅κΈ°λŠ” λͺ¨λ“  λͺ¨λΈμ„ λ‚ μ§œλ³„λ‘œ μ •λ ¬ν•©λ‹ˆλ‹€.
ν•˜μ§€λ§Œ μ—­μˆœμœΌλ‘œ ν•„μš”ν•©λ‹ˆλ‹€. toArray() 및 reverse() 것은 맀우 μΆ”ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€.

μ—¬κΈ°μ„œ μ€‘μš”ν•œ 것을 λ†“μΉ˜κ³  μžˆμ§€ μ•Šλ‹€λ©΄ λ°±λ³Έ λͺ¨λΈ 속성에 νˆ¬ν‘œν•˜μ—¬
비ꡐ기와 ν•¨κ»˜ μ •λ ¬ μˆœμ„œ.

건배,
λ‹€λ‹ˆμ—˜

question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

당신은 λ˜ν•œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€

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

λͺ¨λ“  12 λŒ“κΈ€

μ»¬λ ‰μ…˜μ˜ μ’…λ₯˜λ₯Ό 되 λŒλ¦¬λŠ” κ°€μž₯ 쒋은 방법은 비ꡐ κΈ°μ€€μ—μ„œ 음수 값을 λ°˜ν™˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

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

λ¬Έμžμ—΄ 값을 μ•ŒνŒŒλ²³μˆœμœΌλ‘œ μ •λ ¬ ν•  λ•Œ μ–΄λ–»κ²Œ μž‘λ™ν•©λ‹ˆκΉŒ?

당신이 가진 λͺ¨λ“  것이 λ¬Έμžμ—΄ 값이라면, μ•„λ§ˆλ„ 이전 λ‚ μ§œλ‘œ λ³€ν™˜ν• κΉŒμš”?
λ‚˜λŠ” 같은 λ¬Έμ œκ°€ μžˆμ—ˆκ³  이것이 ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

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

μ΄λŠ” λ‚ μ§œ (접두어에-λ₯Ό 뢙이면 숫자둜 λ³€ν™˜ 됨)μ—λ§Œ μž‘λ™ν•˜μ§€λ§Œ μ•ŒνŒŒλ²³μˆœμœΌλ‘œ μ •λ ¬ν•˜λ €λŠ” μž„μ˜μ˜ λ¬Έμžμ—΄μ—λŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

당신은 λ¬Όλ‘  λ§žμŠ΅λ‹ˆλ‹€, λ‚˜λŠ” 당신이 μ—¬μ „νžˆ λ‚ μ§œμ— λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κ³  μžˆλ‹€κ³  κ°€μ •ν–ˆμ§€λ§Œ (OP처럼) λ‹Ήμ‹ μ˜ λ‚ μ§œλŠ” λ³€ν™˜ κ°€λŠ₯ν•œ λ¬Έμžμ—΄μ΄μ—ˆμŠ΅λ‹ˆλ‹€. λ‚΄ μ‹€μˆ˜ :).

λ‹€μŒ λ²„μ „μ˜ Backbone (및 ν˜„μž¬ λ§ˆμŠ€ν„°)은 비ꡐ기 ( sortBy λŒ€μ‹ )에 λŒ€ν•΄ sort μˆœμ„œλ₯Ό μ§€μ›ν•˜λ―€λ‘œ 일반적인 λ°©μ‹μœΌλ‘œ μ •μ˜ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

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

λ™μΌν•œ μ»¬λ ‰μ…˜μ— λŒ€ν•΄ μ—¬λŸ¬ μ‚¬μš© 사둀가 있고 그쀑 μΌλΆ€λŠ” ν•œ μˆœμ„œλ‘œ ν‘œμ‹œλ˜κ³  λ‹€λ₯Έ ν•˜λ‚˜λŠ” λ°˜λŒ€ μˆœμ„œλ‘œ ν‘œμ‹œλ˜μ–΄μ•Όν•˜λŠ” 경우 μ–΄λ–»κ²Œν•©λ‹ˆκΉŒ? 비ꡐ기 및 μ •λ ¬ κ΅¬ν˜„μ€ ν•œ λ°©ν–₯ λ˜λŠ” λ‹€λ₯Έ λ°©ν–₯ 만 선택할 수 있으며 μ •λ ¬ λ°©ν–₯ (μ˜€λ¦„μ°¨μˆœ λŒ€ λ‚΄λ¦Όμ°¨μˆœ)을 λΉ λ₯΄κ²Œ μ „ν™˜ ν•  μˆ˜μžˆλŠ” Collection.reverse ()κ°€μ—†λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

@ elwayman02 μ»¬λ ‰μ…˜ μΈμŠ€ν„΄μŠ€ 2 개만 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ (Collection # clone이 도움이 될 수 있음).

그것은 νŠΉλ³„νžˆ μœ μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 두 가지 λ‹€λ₯Έ 데이터 μ†ŒμŠ€λ₯Ό μœ μ§€ν•˜κ³  이듀간에 μ „ν™˜ν•˜λŠ” 것은 μ΄μΉ˜μ— λ§žμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•„μš”μ— 따라 μ‘°μž‘ ν•  μˆ˜μžˆλŠ” 데이터 κ°œμ²΄κ°€ ν•˜λ‚˜ μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

μ»¬λ ‰μ…˜μ— μ—¬λŸ¬ 비ꡐ기λ₯Ό μ €μž₯ν•˜κ³  ν•„μš”μ— 따라 κ΅μ²΄ν–ˆμŠ΅λ‹ˆλ‹€.

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();

그것은 더 λ‚˜μ€ ν•΄κ²° λ°©λ²•μ΄μ§€λ§Œ, λ‹¨μˆœνžˆ reverse () λ©”μ„œλ“œλ₯Ό μ§€μ›ν•˜λŠ” λ°±λ³Έ λŒ€μ‹  ν•΄κ²° 방법이 ν•„μš”ν•œ 이유λ₯Ό μ—¬μ „νžˆ μ΄ν•΄ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

당신은 λ˜ν•œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€

collection.set(collection.models.reverse(), {sort: false});
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰