Jelajahi Sumber

perform deep merge for Defaults.set()

nobodyman 9 tahun lalu
induk
melakukan
8398788069
2 mengubah file dengan 20 tambahan dan 2 penghapusan
  1. 1 1
      src/js/select2/defaults.js
  2. 19 1
      tests/options/ajax-tests.js

+ 1 - 1
src/js/select2/defaults.js

@@ -387,7 +387,7 @@ define([
 
     var convertedData = Utils._convertData(data);
 
-    $.extend(this.defaults, convertedData);
+    $.extend(true, this.defaults, convertedData);
   };
 
   var defaults = new Defaults();

+ 19 - 1
tests/options/ajax-tests.js

@@ -29,4 +29,22 @@ test('options are merged recursively with default options', function (assert) {
   );
 
   defaults.reset();
-});
+});
+
+test('more than one default option can be changed via set()', function(assert) {
+  var defaults = require('select2/defaults');
+  var ajaxDelay = 123;
+  var dataDataType = 'xml'
+  defaults.set('ajax--delay', ajaxDelay);
+  defaults.set('ajax--dataType', dataDataType);
+
+  assert.equal(
+      defaults.defaults.ajax.delay,
+      ajaxDelay
+      'Both ajax.delay and ajax.dataType present in defaults');
+  assert.equal(
+    defaults.defaults.ajax.dataType,
+    dataDataType,
+    'Both ajax.delay and ajax.dataType present in defaults');
+  defaults.reset();
+});