我目前正在使用 jQuery UI Widget 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);
我知道工厂的私有方法是伪私有的,它们仍然可以直接使用.date()._privateMethod()
. 如您所见,我正在利用_setOption()
来响应选项更改。
在我的示例中,我不希望max
直接向用户公开(这意味着我不希望用户使用.myWidget('option', 'max', value)
或更改它,.myWidget({max: value})
但同时我想公开min
.
所以总结一下:
- 我希望用户能够使用他们想要的任何选项来初始化(实例化)小部件(它已经实现并且正在工作)。
- 我不希望用户能够
max
在初始化后使用公共 API 进行更改(这意味着如果用户max
通过直接使用.data
或使用小部件的.prototype
.
我怎样才能做到这一点?