1

$.widgetファクトリを使用してjQueryUIウィジェットを拡張しています。この特定のケースでは、私はWijmoのwijlinechartから継承しています。子クラス内からwijlinechartの「ペイントされた」イベントに応答する必要があります。

このことを考慮:

         $.widget("bw.wijlinechartcursor", $.wijmo.wijlinechart, {
             _create: function () {
                 var self = this;
                 $.wijmo.wijlinechart.prototype._create.apply(self, arguments);

                 self.element.on("painted", function (e) {
                     alert("Got painted in child via element.on"); // Doesn't get called.
                 });

                 // This works, but blows away the client code's handler (below)
                 self.options.painted = function (e) {
                    alert("Got painted in child class via options.painted!");
                 }                   

             },

             _painted: function () {
                 alert("Got painted in child via _painted");  // Doesn't get called.
             }
         });

         $("#mywijlinechartcursor").wijlinechartcursor({
             // ... stuff...
             painted: function (e) {
                 alert("Got painted in client code");
             }
         });

では、継承された親クラスによって_トリガーされる子クラスでイベントを処理するための最も効果的な方法は何ですか?

4

1 に答える 1

1

を使用したイベントへのバインドは機能するon()はずです。この場合も、そのイベントにはおそらく名前が付けられていませんpainted

各ウィジェットには独自のイベントプレフィックスがあり、デフォルトではウィジェットの名前になります。ベースウィジェットがこのデフォルト値を上書きしていない場合、イベントには。という名前が付けられwijlinechartpaintedます。

いずれの場合も、プレフィックスはウィジェットのwidgetEventPrefixプロパティで使用できるため、次のように記述できます。

self.element.on(self.widgetEventPrefix + "painted", function(e) {
    alert("Got painted in child via element.on");  // Should be called.
});
于 2012-09-12T19:48:02.480 に答える