Javascript 提前键入调用函数.val.open.close等抛出错误

Javascript 提前键入调用函数.val.open.close等抛出错误,javascript,typeahead.js,twitter-typeahead,Javascript,Typeahead.js,Twitter Typeahead,我很难调用typeahead.js函数,比如val,open,close,等等 typeahead在输入元素上正常工作,因为它显示条目,但当我尝试调用任何typeahead函数时,我得到以下错误: Uncaught Error: one of local, prefetch, or remote is requiredmessage: "one of local, prefetch, or remote is required 我的初始化代码如下: var currentMedicalAid;

我很难调用typeahead.js函数,比如
val
open
close
,等等

typeahead在输入元素上正常工作,因为它显示条目,但当我尝试调用任何typeahead函数时,我得到以下错误:

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
    }
});;
每次运行这些函数中的任何一个时,都会出现错误:

medicalAidList.typeahead('val', '');
or
$('#medicalAidList').typeahead('val','');
任何帮助都将不胜感激


谢谢初始化
方法是异步的。当警犬引擎未完全初始化时,您的某些代码可能正在运行。您可能需要将其余代码包装到回调中:

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

// Rest of your code

})

“/api/Search/GetMedicalAidList”返回的确切内容是什么?这是JSON吗?能否检查此请求是否在浏览器中成功执行。还包括一个返回的JSON示例将有所帮助。JSON是完美的,因为列表可以工作。它与实际的typeahead工作没有任何关系,因为它工作得非常完美。当我在下拉列表中输入时,我会看到一个列表。我只是无法访问typeahead函数——我所有的type ahead都有同样的问题(有些使用远程,有些使用本地,只是无法访问该类型ahead)。好的。我问了我的问题,因为typeahead需要一个javascript对象数组作为其基准,而不是JSON对象。您的示例在“预取”中缺少一个“过滤器”函数声明。参见此示例。虽然这是正确的,但与我的问题无关。typeahead工作正常,只是无法执行其方法。