Javascript 如何将goog.ui.Autocomplete最小输入设置为0

Javascript 如何将goog.ui.Autocomplete最小输入设置为0,javascript,google-closure-library,Javascript,Google Closure Library,我想在输入框聚焦(没有输入)时,自动完成显示整个列表。还希望自动完成匹配子字符串,而不必处理私有变量 目前的代码是: autocomplete = goog.ui.ac.createSimpleAutoComplete( gsa.Game.gameData.teams, team2, false); matcher=autocomplete.getMatcher(); matcher.useSimilar_=true autocomplete.setMatcher(matcher); 类似

我想在输入框聚焦(没有输入)时,自动完成显示整个列表。还希望自动完成匹配子字符串,而不必处理私有变量

目前的代码是:

autocomplete = goog.ui.ac.createSimpleAutoComplete(
  gsa.Game.gameData.teams, team2, false);
matcher=autocomplete.getMatcher();
matcher.useSimilar_=true
autocomplete.setMatcher(matcher);
类似的匹配可以工作,但必须为此设置一个私有变量(没有可用的getter或setter)


另一个我还没有找到;如何在没有输入时显示所有数据(如智能选择输入)。因此,当文本框接收到焦点时,它将显示所有数据,因为没有给出过滤文本。这些都是您想要配置的基本内容,但在API文档中找不到。

您需要创建
goog.ui.ac.AutoComplete
goog.ui.ac.ArrayMatcher
goog.ui.ac.InputHandler
的后代。另外,您将直接创建自动完成对象的实例,而不是调用
goog.ui.ac.createSimpleAutoComplete


goog.ui.ac.AutoComplete
子体中,指定自定义输入处理程序和匹配程序

goog.provide('my.ui.ac.AutoComplete');
goog.require('goog.ui.ac.Renderer');
goog.require('my.ui.ac.ArrayMatcher');
goog.require('my.ui.ac.InputHandler');
my.ui.ac.AutoComplete=函数(数据、输入、选项多、选项多){
var renderer=new goog.ui.ac.renderer();
var matcher=新的my.ui.ac.ArrayMatcher(数据,!opt_useSimular);
var inputhandler=new my.ui.ac.inputhandler(null,null,!!opt_multi,300);
调用(this、matcher、renderer、inputhandler);
附件完成(本文件);
inputhandler.attachInputs(输入);
};
goog.inherits(my.ui.ac.AutoComplete,goog.ui.ac.AutoComplete);

goog.ui.ac.ArrayMatcher
子体中,您需要重写
getPrefixMatches()
方法,因为默认行为会丢弃空字符串。因此,如果有空字符串,我们只返回数据中的前x行

goog.provide('my.ui.ac.ArrayMatcher');
goog.require('goog.ui.ac.ArrayMatcher');
my.ui.ac.ArrayMatcher=函数(行,选项不相似){
调用(this,rows,opt_nosimular);
};
goog.inherits(my.ui.ac.ArrayMatcher,goog.ui.ac.ArrayMatcher);
my.ui.ac.ArrayMatcher.prototype.getPrefixMatches=函数(令牌,maxMatches){
如果(令牌=“”)
{
//对于空搜索字符串,返回第一个maxMatches行
返回此.rows\uux.slice(0,maxMatches);
}
其他的
{
返回goog.base(这是'getPrefixMatches',标记,maxMatches);
}
};

goog.ui.ac.InputHandler
子体中,需要重写
processFocus()
方法,并强制显示自动完成弹出窗口。这可以通过在第一个参数设置为true的情况下调用
update()
方法来实现

goog.provide('my.ui.ac.InputHandler');
goog.require('goog.ui.ac.InputHandler');
my.ui.ac.InputHandler=函数(opt_分隔符、opt_文本、opt_多重、opt_节流时间){
调用(this,opt_分隔符,opt_文本,opt_multi,opt_throttleTime);
};
goog.InputHandler,goog.ui.ac.InputHandler;
my.ui.ac.InputHandler.prototype.processFocus=函数(目标){
goog.base(这是'processFocus',target);
//强制显示自动完成弹出窗口
此。更新(正确);
};