2014-10-25 2 views
5

Я изо всех сил, чтобы позвонить typeahead.js функции, такие как val, open, close и т.д.машинописный вызов функций .val .Open .close и т.д. кидает ошибки

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

Uncaught Error: one of local, prefetch, or remote is requiredmessage: "one of local, prefetch, or remote is required 

Мой код инициализации выглядит следующим образом:

var currentMedicalAid; 

var medicalAidList = $('#medicalAidList'); 


var medicalAidengine = new Bloodhound({ 
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('MedicalAid1'), 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    limit: 5, 
    prefetch: { 
     url: '/api/Search/GetMedicalAidList', 
    } 
}); 


medicalAidengine.initialize(); 


medicalAidList.typeahead(null, { 
    name: 'MedicalAid1', 
    displayKey: 'MedicalAid1', 
    // `ttAdapter` wraps the suggestion engine in an adapter that 
    // is compatible with the typeahead jQuery plugin 
    source: medicalAidengine.ttAdapter() 
}).blur(function() { 
    match = false; 
    for (var i = medicalAidengine.index.datums.length - 1; i >= 0; i--) { 
     if ($(this).val() == medicalAidengine.index.datums[i].MedicalAid1) { 
      currentMedicalAid = medicalAidengine.index.datums[i].MedicalAidID; 
      match = true; 
     } 
    }; 
    if (!match) { 
     currentMedicalAid = '00000000-0000-0000-0000-000000000000'; 
     $(this).val(''); 
     medicalAidList.typeahead('val', ''); // throws error 
    } 
});; 

Everytime я бегу либо одну из этих функций, я получаю сообщение об ошибке:

medicalAidList.typeahead('val', ''); 
or 
$('#medicalAidList').typeahead('val',''); 

Любая помощь будет принята с благодарностью

Благодаря

+0

Что именно возвращает «/ api/Search/GetMedicalAidList»? Это JSON? Вы можете проверить, успешно ли выполняется этот запрос в вашем браузере. Также поможет пример возврата JSON. –

+0

JSON идеально подходит, потому что список работает. Это не имеет никакого отношения к действительной работе типа, потому что она отлично работает. Когда я набираю раскрывающийся список, я получаю список, который должен появиться так, как должен. Я просто не могу получить доступ к функциям typeahead - у меня такая же проблема во всех моих типах (некоторые используют удаленные другие локальные, просто не могут получить доступ к типу впереди. –

+0

Хорошо. Я задал свой вопрос, поскольку typeahead требует массив объектов javascript для его баз данных , а не объекты JSON. В вашем примере отсутствует функция «filter» в объявлении «prefetch». См. этот пример https://twitter.github.io/typeahead.js/examples/#prefetch. –

ответ

1

Метод initialize асинхронный. Возможно, что некоторые из ваших кодов работают, когда движок Bloodhound не полностью инициализирован. Возможно, вам придется обернуть остальную часть кода в обратном вызове:

// initialize returns a jQuery promise, so we can call its done method 
medicalAidengine.initialize().done(function(){ 

// Rest of your code 

}) 
+0

Хотя это правильно, это не имеет отношения к моему вопросу.Тип-глава работает правильно, его невозможно просто выполнить. –

+0

@PeterStulinski вы попробовали его и все еще не сработали? – parchment

+0

Это правильно - это не решает проблему. –