使用对象变量作为实现自动完成的数据源



我正在寻找熟悉物质框架的人。我正在使用内置的自动完成功能,但难以动态获取数据。该示例如下所示:

$(‘input.autocomplete’).autocomplete({
data: {
“Apple”: null,
“Microsoft”: null,
“Google”: ‘https://placehold.it/250x250’
},
limit: 20, // The max amount of results that can be shown at once. Default: Infinity.
onAutocomplete: function(val) {
// Callback function when value is autcompleted.
},
minLength: 1, // The minimum length of the input for the autocomplete to start. Default: 1.
});

我想创建自己的对象以用作数据:

var itemNames = {};
function getNames() {
    var itemName;
    var itemIndex;
    var items = $(‘tr’);
    for (var i = 0; i < items.length; i++) {
    itemNames["${items[i].childNodes[0].innerText}"] = ‘img/md.png’;
    }
}
setTimeout(function(){
getNames();
}, 2000);
$(’.autocomplete’).autocomplete({
data: itemNames,
limit: 5,
onAutocomplete: function(val) {
  },
  minLength: 2
});

我从页面上的表中获得了此名称列表,该名称由Firebase填充。两件事:

我必须延迟getNames函数,否则itemNames对象不会填充。

自动完成未连接到ItemNames对象。

如果我手动将对象设置为数据,则自动完成工作正在工作,但它不喜欢变量。没有错误的错误,只是没有建议。

有什么想法吗?我还尝试将数据设置为功能,没有骰子。

将自动完整函数移动到SettiMeout似乎有效。不确定当对象更新时是否有任何长期含义。会报告。

setTimeout(function(){
     getNames();
     console.log($itemNames);
     $('.autocomplete').autocomplete({ data: $itemNames,
       limit: 5, onAutocomplete: function(val) {}, minLength: 2 });
   }, 2000);

最新更新