select: add sourceOptions to modify source request method and params

This commit is contained in:
vitalets 2013-09-22 12:34:22 +04:00
parent 1329e0ccf9
commit a55f38ab60
3 changed files with 52 additions and 5 deletions

@ -3,6 +3,7 @@ X-editable changelog
Version 1.5.0 wip Version 1.5.0 wip
---------------------------- ----------------------------
[enh] select: add `sourceOptions` to modify source request method and params (vitalets)
[enh #377] add bool option `escape` to allow html as content (vitalets) [enh #377] add bool option `escape` to allow html as content (vitalets)
[bug #344] fix determing empty for html content (vitalets) [bug #344] fix determing empty for html content (vitalets)
[enh] update select2 to 3.4.3 (vitalets) [enh] update select2 to 3.4.3 (vitalets)

@ -117,8 +117,8 @@ List - abstract class for inputs that have source option loaded from js array or
} }
} }
//loading sourceData from server //ajaxOptions for source. Can be overwritten bt options.sourceOptions
$.ajax({ var ajaxOptions = $.extend({
url: source, url: source,
type: 'get', type: 'get',
cache: false, cache: false,
@ -153,7 +153,11 @@ List - abstract class for inputs that have source option loaded from js array or
$.each(cache.err_callbacks, function () { this.call(); }); $.each(cache.err_callbacks, function () { this.call(); });
} }
}, this) }, this)
}); }, this.options.sourceOptions);
//loading sourceData from server
$.ajax(ajaxOptions);
} else { //options as json/array } else { //options as json/array
this.sourceData = this.makeArray(source); this.sourceData = this.makeArray(source);
@ -313,7 +317,17 @@ List - abstract class for inputs that have source option loaded from js array or
@default true @default true
@since 1.2.0 @since 1.2.0
**/ **/
sourceCache: true sourceCache: true,
/**
Additional ajax options to be used in $.ajax() when loading list from server.
Useful to send extra parameters (`data` key) or change request method (`type` key).
@property sourceOptions
@type object|function
@default null
@since 1.5.0
**/
sourceOptions: null
}); });
$.fn.editabletypes.list = List; $.fn.editabletypes.list = List;

@ -791,5 +791,37 @@ $(function () {
ok(p.find('select').length, 'select exists') ok(p.find('select').length, 'select exists')
equal(p.find('select').val(), 3, 'selected value correct'); equal(p.find('select').val(), 3, 'selected value correct');
}); });
asyncTest("sourceOptions", function () {
expect(3);
var e = $('<a href="#" data-type="select" data-value="2" data-source="sourceOptions">customer</a>').appendTo(fx).editable({
sourceOptions: {
type: 'post',
data: {
a: 1
}
}
});
$.mockjax({
url: 'sourceOptions',
type: 'post',
response: function(settings) {
equal(settings.data.a, 1, 'params sent!');
this.responseText = groups;
}
});
e.click();
var p = tip(e);
setTimeout(function() {
equal(p.find('select').find('option').length, size, 'options loaded');
equal(p.find('select').val(), e.data('editable').value, 'selected value correct') ;
e.remove();
start();
}, timeout);
});
}); });