2


1

Google Closure:オートコンプリートの入力を動的に設定する

Google Closure(GC)Javascript Libraryを使用すると、このデモが示すように、オートコンプリートUIを非常に簡単に作成できます-http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/autocomplete-basic.html .

基本的に、私たちがしなければならないことは、配列を定義し、それをパラメーターの1つとして渡すことです。 配列を動的に更新し、オートコンプリートで変更をすぐに表示できるようにしたいと思います。

例、2つの配列がある場合

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

オートコンプリートはlist1を使用して初期化されています

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

list2を使用するように既存のオートコンプリート(推奨)を更新するにはどうすればよいですか?

3 Answer


1


これを行うためのパブリックAPIはありません。 次のように、保護されたmatcher_変数を変更するメソッドを使用してサブクラスを作成できます。

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

リモートソースから動的に更新する場合は、http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/autocompleteremote.html [goog.ui.AutoComplete.Remote]を使用します。


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)を呼び出します。


0


最初に `getMatcher()`を使用して_matcher_を取得し、次に `setRows(newRows)`を使用して新しい行を設定します。