Я довольно новичок в JavaScript. Я загрузил некоторый код для создания автозаполнения для полей поиска, но он не работает так, как я ожидал.
Это код, который я скачал:
Autocompleter.Local = new Class({
Extends: Autocompleter,
initialize: function (element, tokens, options) {
this.parent(element, options);
console.log(tokens); // I added this
this.tokens = tokens;
},
query: function () {
console.log(this.tokens); // and this
this.update(this.filter());
}
});
Чтобы использовать этот код, я делаю это:
var Activities = ['aa', 'bb', 'cc', 'abcd'];
function InitializePage() {
new Autocompleter.Local('txtSearch', Activities, {
'minLength': 1, // We wait for at least one character
'overflow': false, // Overflow for more entries
'selectMode': 'type-ahead'
});
}
window.addEvent('domready', function () {
InitializePage();
});
Параметр tokens
для функции инициализации - это массив всех возможных вещей, которые может предложить автозаполнение. функция filter()
фильтрует их, поэтому для пользователя отображаются только релевантные. Я хочу изменить массив tokens
в разное время, чтобы пользователю предлагались разные вещи.
Я пытался сделать это:
new Request.JSON({ method: 'get', url: 'handler/GetActivities.ashx', autoCancel: true, urlEncoded: false, secure: false,
headers: { "Content-type": "application/json" },
onSuccess: function (_json, _jsonText) {
Activities = _json;
}
}).send();
Я подтвердил, что переменная Activities
обновляется по этому запросу. Однако переменная tokens
внутри класса автозаполнения остается в виде массива, который был инициализирован как.
Как получить, чтобы переменная tokens
указывала на те же данные, что и переменная activities
?