2012-12-17 19 views
9

Uygulamamda jQuery UI'nin tam bir kopyası var, bu yüzden CDN'den mi yoksa yerel olarak mı yüklüyorum farketmez, tek bildiğim yüklendi. (Biz CDN dan yük çünkü eğer bizim tek seçenek evet canlı versiyonunu monkeypatch etmektir?)Bu örnekte jQueryUI ProgressBar'ı doğru bir şekilde maymunluk yapıyorum mu?

ben den bakın: https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.progressbar.jsthis.min maalesef ayarlanabilir seçeneği (aksine this.options.max) olmadığını. Benim durumumda this.min-1 olması gerekiyor (ve evet, uygulama çapında, biz takım içinde bu içten konuştuk ve jQuery kararının nedenini anlıyoruz, sadece başka türlü olması gerekiyor), bu yüzden tek seçeneklerim prototip maymun veya kendi eklenti korumak için. Ayrıca jQuery UI nesnelerini yüklemek için "widget" mimarisini kullandıklarını da görüyorum.

/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 

yüzden company.utils.js içine gitmeyi düşünüyorum ve bu yüzden böyle bir monkeypatch tanımlamak: Bu özel uygulamasında

, benim komut dosyaları kabaca şöyle yüklenir

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

Ancak, bu nesneyi maymunlamak için doğru yol olup olmadığını merak ediyorum. Oldukça emin, ama daha geniş StackOverflow topluluğuna sorabileceğimi ve gelecekteki araştırmacılar için googlable bir şey önerebileceğimi düşündüm.

cevap

4

Evet, doğru. Eğer jQuery UI 1.9 kullanıyorsanız Alternatif olarak, kendi uzantısı tanımlamak için Widget fabrikası kullanabilirsiniz:

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

biraz daha ayrıntılı olsa.

+1

whoa whoa, ben _that_ gibi prototipi maymun yapabilirim? Gelecekte kırılmaya daha az eğilimli görünüyor ... – jcolebrand

İlgili konular