我很新的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
参数初始化功能是所有的数组autocompleter可能会提出的可能的事情。 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
变量是由该请求更新。但是,autocompleter类中的tokens
变量仍然是初始化为的数组。
我该如何得到它以便tokens
变量指向与activities
变量相同的数据?
谢谢。我以完全错误的方式看待这个问题。我不得不盯着拼接/应用的东西10分钟来解决那里发生的事情! – Oliver
@Oliver:不客气:) FWIW,我现在解释得好一点。 –