2012-03-30 17 views
3

私はYUI3の自動補完プラグインを使用しています。 Y.Plugin.Autocomplete。YUI3プラグインとクラスの拡張

今、私はこのプラグインを拡張し、非常に特定のプラグインを作成したいと思います。 Y.MyModule.TagAutocomplete、Y.MyModule.EmailAutocompleteなどのように。

私の簡単な質問は、自分のサブクラスに初期化メソッドを書いているときに、スーパークラスのコンストラクタを明示的に呼び出す必要があるのか​​、それとも暗黙的に起こるのでしょうか? 構文とは何ですか?

答えて

1

私はプラグインを拡張しようとしたことはありませんが、私はY.Baseから延びるなかったし、ここに記載されているようにそれが動作します:http://yuilibrary.com/yui/docs/base/

詳細は:あなたは「コンストラクタ関数」を作成

  1. 。ここでは、スーパークラスのコンストラクタを呼び出す必要があります。

    function MyClass(config) { 
        // Invoke Base constructor, passing through arguments 
        MyClass.superclass.constructor.apply(this, arguments); 
    } 
    
  2. 次に、(あなたのケースでまたはY.Plugin.Autocomplete)Y.Baseから延長独自のクラスを作るためにY.extendメソッドを使用

    Y.extend(MyClass, Y.Base, { 
        // Prototype methods for your new class 
    }); 
    
  3. Y.Baseには、 "initializer"という特別なメソッドがあります。このメソッドは、新しいオブジェクトを作成し、親のinitizlizerを手動で呼び出す必要はありません。私はY.Plugin.Autocompleteに独自の "初期化子"があると思います。だから、ジュースは、次のようにします。私の側から

    Y.extend(MyClass, Y.Plugin.Autocomplete, { 
        initializer: function(config) { 
         alert("This initializer called after Y.Plugin.Autocomplete's initializer"); 
        } 
    }); 
    

最終コメント:私はY.Plugin.Autocompleteを拡張しようとしましたことがありません、私のオートコンプリートの実現にボンネットの下に何かがあること。それを試してみてください!