私は現在jQueryUIWidget Factoryを使用していますが、残念ながらドキュメントが非常に貧弱です。
これが基本的なウィジェット(テスト用のjsfiddle)です
(function($) {
$.widget('ns.myWidget', {
options: {
min: 0,
max: 100
},
_create: function() {
console.log(this.options.min+', '+this.options.max);
},
_setOption: function(key, value) {
switch(key) {
case 'min':
console.log('min is now '+value);
break;
}
$.Widget.prototype._setOption.apply(this,arguments)
},
destroy: function() {
$.Widget.prototype.destroy.call(this);
}
});
})(jQuery);
Factoryのプライベートメソッドは疑似プライベートであり、。を使用して直接アクセスできることを理解しています.date()._privateMethod()
。ご覧のとおり_setOption()
、オプションの変更に対応するために利用しています。
私の例ではmax
、ユーザーに直接公開したくない(つまり、ユーザーがを使用して変更したくない.myWidget('option', 'max', value)
が.myWidget({max: value})
、同時に公開したいmin
。
要約すると:
- ユーザーが任意のオプションでウィジェットを初期化(インスタンス化)できるようにしたいと思います(ウィジェットはすでに実装され、機能しています)。
- 初期化後にパブリックAPIを使用してユーザーが変更できないようにします(つまり、ウィジェットを使用して、またはウィジェットを使用してインスタンスに直接アクセスすることでユーザーが変更しても問題ありません。
max
max
.data
.prototype
どうすればそれを達成できますか?