jQuery 1.6.4 から 1.9.x へのアップグレードの一環として、jQuery ウィジェット ブリッジを使用して、jQuery の拡張機能としてではなく、スタンドアロン オブジェクトとして作成されたウィジェットの関数にアクセスできるようにする方法を理解しようとしています。
すべての例 (この例など) では、プロトタイプ関数をオブジェクトのソース定義として使用しています。これは、{} ベースの定義から直接オブジェクトを定義するためにマップされていないようです。
たとえば、次のようなウィジェットを定義しています。
var ControlPanel = {
instance: null,
options: {
//Some options here
},
simpleFunction: function(){
alert("I am a function");
},
_init: function() {
//Some init stuff here
}
}
$.widget("basereality.controlPanel", ControlPanel); // create the widget
//This doesn't appear to work...
$.widget.bridge('controlPanel', $.basereality.controlPanel); //'Bridge' the widget
そして、次のようにしてインスタンスを作成します。
var controlPanelParams = {
// some options go here
};
var newControlPanel = $('#controlPanel').controlPanel(controlPanelParams);
作成したオブジェクトでメソッド「simpleFunction」を呼び出せるようにしたいと思います。これは、次のようにして実行しようとしました。
newControlPanel.simpleFunction();
//and
$(newControlPanel).simpleFunction();
どちらも「オブジェクトには simpleFunction というメソッドがありません」というエラーが発生します。
では、私は何を間違っており、関数ベースでないオブジェクトで $.widget.bridge をどのように使用するつもりですか?