1

panel.addButton({value:"XXX",section:...,action:function(){ * }}) を使用してパネルにボタンを追加しましたが、ボタンのアクションをオーバーライドしたいのですが、どうすればよいですかこれ!

4

1 に答える 1

1

action関数自体を「変更」することはできません。action作成したボタン ノードに特定のイベントのイベント リスナーを追加するためのショートカットです。できることは、そのイベント リスナーを削除して別のリスナーを追加することです。

追加するイベント リスナーは 1 つだけなのでaction、すべてのイベント リスナーを削除することで安全に削除できます。でボタン ノードを取得し、新しいイベント リスナーgetButtonを呼び出しdetachAllてアタッチするだけです。

var panel = new Y.Panel({ /* panel config with some buttons */  });
// later on...
var button = panel.getButton(1);
button.detachAll();
button.on('click', newAction);
于 2013-02-22T19:30:36.650 に答える