/** * @ignore * Local dataSource for ComboBox * @author yiminghe@gmail.com */ KISSY.add("combobox/local-data-source", function (S, Base) { /** * Local dataSource for comboBox. * @extends KISSY.Base * @class KISSY.ComboBox.LocalDataSource */ return Base.extend({ /** * Data source interface. How to get data for comboBox. * @param {String} inputVal current active input's value * @param {Function} callback callback to notify comboBox when data is ready * @param {Object} context callback 's execution context */ fetchData: function (inputVal, callback, context) { var parse = this.get("parse"), data = this.get("data"); data = parse(inputVal, data); callback.call(context, data); } }, { ATTRS: { /** * array of static data for comboBox * @cfg {Object[]} data */ /** * @ignore */ data: { value: [] }, /** * parse data function. * Defaults to: index of match. * @cfg {Function} parse */ parse: { value: parser } } }); function parser(inputVal, data) { var ret = [], count = 0; if (!inputVal) { return data; } S.each(data, function (d) { if (d.indexOf(inputVal) != -1) { ret.push(d); } count++; }); return ret; } }, { requires: ['base'] });