我在这个例子中正确地monkeypatching jQueryUI ProgressBar吗?

时间:2012-12-17 15:54:02

标签: jquery-ui jquery-ui-progressbar

我在应用程序中有一个完整的jQuery UI副本,所以无论我是从CDN加载还是本地加载都没关系,我所知道的是它已经加载了。 (因为如果我们从CDN加载我们唯一的选择是monkeypatch实时版本,是吗?)

我从https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.progressbar.js看到,this.min遗憾的是不是一个可设置的选项(this.options.max相反)。在我的情况下,我需要this.min-1(是的,在整个应用程序范围内,我们已在团队内部讨论过这个问题,我们理解jQuery决策的原因,我们只是需要它) ,所以我唯一的选择似乎是monkeypatch原型或维护我自己的插件。我也看到他们现在正在使用“widget”架构来加载jQuery UI对象。

在这个特定的应用程序中,我的脚本大致加载如下:

/javascripts/lib/jquery.min.js
/javascripts/lib/jquery-ui.min.js
...
/javascripts/company.utils.js
/javascripts/company.helpers.js
...
page level includes of javascript libraries
...
page level javascript

所以我想进入company.utils.js并定义一个像这样的monkeypatch:

$.ui.progressbar.prototype.min = -1;

然而,我很好奇这是否是monkeypatch这个对象的正确方法。很确定它是,但我想我会问更广泛的StackOverflow社区,并为未来的搜索者提供可转发的东西。

1 个答案:

答案 0 :(得分:4)

是的,这是正确的。或者,如果您使用的是jQuery UI 1.9,则可以使用小部件工厂来定义扩展名:

$.widget( "ui.progressbar", $.ui.progressbar, {
    min: -1
});

虽然稍微冗长一点。