2015-10-12 6 views
3

Вот мой код:машинописный с Bloodhound удаленных предложений

tagsProcessor(){ 
     const suggestions = [{value: 'string1'}, {value: 'string2'}, {value: 'string3'}, {value: 'string4'}, {value: 'string5'}] 
     var bloodhoundSuggestions = new Bloodhound({ 
      datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'), 
      queryTokenizer: Bloodhound.tokenizers.whitespace, 
      sufficient: 3, 
      local: suggestions, 
      remote: { 
      url: 'http://localhost:3001/api/suggestions', 
      } 
     }); 

     const $tagsInput = $('#tagsInput') 
     $tagsInput.typeahead({ 
      hint: true, 
      highlight: true, 
      minLength: 1 
     }, 
     { 
      name: 'suggestions', 
      displayKey: 'value', 
      source: bloodhoundSuggestions 
     }); 

    } 
} 

работы это с местными предложениями мелких, но он не работает с пульта дистанционного управления по какой-то причине.

URL-адрес http://localhost:3001/api/suggestions возвращает массив объектов, аналогичный константе suggestions.

Почему никаких предложений с удаленного устройства не отображаются на входе typeahead?

Я получаю эту ошибку в консоли сразу после этой функции получает дистанционные предложения:

Uncaught TypeError: Cannot read property 'length' of undefined jQuery.extend.each @ libs.js:358 _.each @ libs.js:17928 processRemote @ libs.js:18763 onResponse @ libs.js:18515 done @ libs.js:18254 jQuery.Callbacks.fire @ libs.js:3148 jQuery.Callbacks.self.fireWith @ libs.js:3260 done @ libs.js:9314 jQuery.ajaxTransport.options.send.callback @ libs.js:9718

Update 1 Мои данные дистанционного возвращается nodeJS сервера API:

router.route('/suggestions') 
    .get(function(req, res) { 
    res.json([{value: 'data10'}, {value: 'data30'}, {value: 'data20'}, {value: 'data40'}, {value: 'data50'}]) 
    }); 

Обновление 2 Я уверен, что получаю правильный ответ от сервера, потому что я вижу его в console.log:

var bloodhoundSuggestions = new Bloodhound({ 
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'), 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    local: suggestions, 
    remote: { 
    url: 'http://localhost:3001/api/suggestions', 
    transform: function(argument) { 
      console.log('argument', argument) 
      return argument 
     } 
    } 
}); 
+1

Ваш удаленный файл - это массив? или Джон? –

+0

Я добавил ответ в описании – stkvtflw

+1

Сколько входных данных у вас на вашем Json? Поскольку удаленный доступ ограничен –

ответ

2

Пример кода, работающего с удаленным источником данных здесь:

https://jsfiddle.net/ka0v6bg7/

Попробуйте найти строки, начинающиеся с «данными» или «строка» (примечание, запрашивая «данных «займет немного больше времени, поскольку это удаленный источник данных!)

Единственное, что я изменил, это удаленный источник данных.

Поэтому вещи, чтобы проверить:

1) То, что вы правильно ссылки машинописный. Попробуйте использовать его здесь:

https://cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.11.1/typeahead.bundle.min.js 

как тест.

2) Ошибка JQuery предполагает, что на нее нельзя ссылаться правильно. Опять же, в качестве теста попробуйте указать JQuery отсюда:

https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js 
+0

Вы решили эту проблему? Помог ли мой ответ, когда я показал вам, как заставить ваш код работать с удаленным источником данных? –