修改承诺返回的数据?

时间:2015-01-20 05:33:01

标签: javascript jquery twitter-bootstrap bootstrap-tags-input

我目前正在使用此插件进行标签输入'bootstrap-tagsinput'

我正在尝试使用此插件提供的预先输入功能。 typeahead中的source属性需要返回promise。但我需要修改返回的数据。我该怎么做?

$('input').tagsinput({
  typeahead: {                  
    source: function(query) {
      return $.get('/tags.json').then(function(data){
          return _.pluck(data.tags,'keyword');
       });
    }
  }
});

1 个答案:

答案 0 :(得分:0)

尝试

var list = ["Amsterdam", "Beijing", "Cairo"];
var citynames = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    prefetch: {
        url: '/tags.json',
        filter: function (res) {
            // modify returned data here ,
            // e.g., `res` : `["abc"]`
            return $.map(res[0].split(""), function (val, i) {
                return {
                    name: val.toUpperCase() === list[i][0] ? list[i] : null
                };
            });
        }
    }
});
citynames.initialize();

$('input.bootstrap-tagsinput').tagsinput({
    typeaheadjs: {
        name: 'citynames',
        displayKey: 'name',
        valueKey: 'name',
        source: citynames.ttAdapter()
    }
});

jsfiddle http://jsfiddle.net/guest271314/dbfx1tso/

请参阅Bootstrap Tags Input Typeahead