Sfoglia il codice sorgente

preserve order of elements in the data call. fixes #1280

Igor Vaynberg 12 anni fa
parent
commit
92617ec54e
1 ha cambiato i file con 15 aggiunte e 1 eliminazioni
  1. 15 1
      select2.js

+ 15 - 1
select2.js

@@ -2236,7 +2236,21 @@ the specific language governing permissions and limitations under the Apache Lic
                             return is_match;
                         },
                         callback: !$.isFunction(callback) ? $.noop : function() {
-                            callback(matches);
+                            // reorder matches based on the order they appear in the ids array because right now
+                            // they are in the order in which they appear in data array
+                            var ordered = [];
+                            for (var i = 0; i < ids.length; i++) {
+                                var id = ids[i];
+                                for (var j = 0; j < matches.length; j++) {
+                                    var match = matches[j];
+                                    if (equal(id, opts.id(match))) {
+                                        ordered.push(match);
+                                        matches.splice(j, 1);
+                                        break;
+                                    }
+                                }
+                            }
+                            callback(ordered);
                         }
                     });
                 };