2012-12-17 12 views
9

Mam pełną wersję odwiertu jQuery w aplikacji, więc nie ma znaczenia, czy ładuję się z CDN, czy lokalnie, wszystko, co wiem, jest załadowane. (Bo jeśli ładujemy z CDN naszą jedyną opcją jest monkeypatch wersję na żywo, tak?)Czy pomijam jQueryUI ProgressBar poprawnie w tym przykładzie?

widzę od: https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.progressbar.js że this.min nie jest niestety ustawiane opcja (w przeciwieństwie this.options.max). W moim przypadku muszę this.min być -1 (i tak, aplikacja szeroko, omówiliśmy to wewnętrznie w zespole i rozumiemy powód decyzji jQuery, po prostu potrzebujemy, aby było inaczej), więc moje jedyne opcje wydają się być monkeypatch prototyp lub utrzymywanie własnej wtyczki. Widzę również, że używają teraz architektury "widgetów" do ładowania obiektów jQuery UI.

W tym konkretnym zastosowaniu, moje skrypty są ładowane z grubsza tak:

/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 

Więc myślę o wchodząc company.utils.js i zdefiniować monkeypatch tak:

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

Jednak jestem ciekawy, czy to jest właściwy sposób na monkeypatch tego obiektu. Jestem pewien, że tak, ale pomyślałem, że zapytam szerszą społeczność StackOverflow i zaoferuję coś możliwego do zagrania dla przyszłych poszukiwaczy.

Odpowiedz

4

Tak, zgadza się. Ewentualnie, jeśli używasz jQuery UI 1.9, można użyć fabrykę widget zdefiniować rozszerzenie:

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

Choć jest nieco bardziej rozwlekły.

+1

whoa whoa, mogę monkeypatch prototyp jak _that_? To wydaje się znacznie mniej podatne na przyszłe złamanie ... – jcolebrand

Powiązane problemy