2

Google Closure (GC) Javascript 库使创建自动完成 UI 变得非常容易,正如这个演示所示 - http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/autocomplete-basic.html .

基本上,我们所要做的就是定义一个数组并将其作为参数之一传递。我希望能够动态更新数组并让 AutoComplete 立即显示更改。

例如,如果有两个数组

list1 = ["One", "Two", "Three"]
list2 = ["1", "2", "3"]

并且已经使用 list1 初始化了 AutoComplete,

var suggest = new goog.ui.AutoComplete.Basic(list1, document.getElementById('input'), false);

如何更新现有的自动完成(建议)以使用 list2?

4

3 回答 3

1

没有公共 API 可以执行此操作。您可以使用更改受保护 matcher_ 变量的方法创建一个子类,如下所示:

this.matcher_ = new goog.ui.AutoComplete.ArrayMatcher(list2, false);

如果要从远程源动态更新,请使用goog.ui.AutoComplete.Remote

于 2010-03-19T00:36:43.063 回答
1

这是我用来使用基本自动完成更新数组的方法

/**
 * Set the post data for the matcher.
 * @param {string} content Post data.
 */
goog.ui.AutoComplete.Basic.prototype.setContent = function(content) {

  this.matcher_.setContent(content);
};
/**
 * Set the post data.
 * @param {string} content Post data.
 */
goog.ui.AutoComplete.ArrayMatcher.prototype.setContent =function(content) {
    this.rows_ = content;
  this.content_ = content;
};

然后从您的代码中,当您想要更新列表时,您会调用Suggest.setContent(myarray)

于 2011-07-01T02:37:09.783 回答
0

首先使用 获取匹配器,然后使用getMatcher()设置新行setRows(newRows)

于 2015-05-13T04:00:17.877 回答