Autocompleterを読む
railsのauto_complete_fieldをカスタマイズしたくなったので、controls.jsを読んでみることにしました。
まずはざくっとオブジェクトを洗い出してみる
登場するオブジェクト
- Autocompleter
- Autocompleter.Base
- Ajax.Autocompleter
- Autocompleter.Local
Autocompleterは名前空間を確保するただのオブジェクト。それ以外はクラスだね。
Autocompleter.Baseの最初の方は
Autocompleter.Base = function() {}; Autocompleter.Base.prototype = { baseInitialize: function(element, update, options) {
って感じになってて、いろんなメソッドが定義されているので、これが基本なんでしょうね。
次、Ajax.Autocompleter。
Ajax.Autocompleter = Class.create(); Object.extend(Object.extend(Ajax.Autocompleter.prototype, Autocompleter.Base.prototype), { initialize: function(element, update, url, options) { this.baseInitialize(element, update, options); ・・・ }, getUpdatedChoices: function() { ・・・ }, onComplete: function(request) { this.updateChoices(request.responseText); }
Ajax.Autocompleterは、Autocompleter.Baseを継承しています。
Autocompleter.Localは、
// The local array autocompleter. Used when you'd prefer to // inject an array of autocompletion options into the page, rather // than sending out Ajax queries, which can be quite slow sometimes.
とあるので、(遅い)Ajaxで候補を取得するんじゃなくてローカルなJSの配列で候補を扱いたい時に使うんだそうです。
というわけで、Autocompleter.Baseを理解すれば、ほとんどOKってことが分かりました。詳しいことはまた今度。