我决定编写一个自定义小部件,扩展并覆盖标准的自动完成小部件。
The official documentation for the $.widget factory提到继承,但看起来不太可能覆盖原始的窗口小部件选项(即不仅仅是添加它们)。
例如,我无法使用以下代码重新定义 source 选项(默认为null):
$.widget("ui.productSearch", $.ui.autocomplete, {
bla: 15,
source: function( request, response ) {
response($.ui.autocomplete
.filter(["a", "b", "c"],request.term));
},
minLength: 2
});
我尝试了上面的代码on JS Bin。如果检查生成的小部件,您可以看到 bla 已添加到选项中,但 source 和 minLength 仍然反映了在$ .ui.autocomplete。 source 仍然为null,因此会引发错误: this.source不是函数。
我做错了什么?如果这是$ .widget的预期行为,那么覆盖选项的最佳方法是什么?
答案 0 :(得分:6)
嗯,看起来像我一样,只是定义一个功能来源'在新的小部件;那没关系,但是你没有覆盖这个选项。如果你试过怎么办
$.widget("ui.productSearch", $.ui.autocomplete, {
options: {
bla: 15,
source: function( request, response ) {
response($.ui.autocomplete
.filter(["a", "b", "c"],request.term));
},
minLength: 2
}
});