2012-12-17 36 views
9

Tôi đã có bản sao đầy đủ về giao diện người dùng jQuery trong ứng dụng, vì vậy không quan trọng nếu tôi tải từ CDN hoặc cục bộ, tất cả những gì tôi biết là nó được tải. (bởi vì nếu chúng tôi tải từ CDN, lựa chọn duy nhất của chúng tôi là để monkeypatch phiên bản trực tiếp, có?)Tôi có đang lồng ghép jQueryUI ProgressBar một cách chính xác trong ví dụ này không?

Tôi thấy từ: https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.progressbar.js không may là một tùy chọn có thể cài đặt (this.options.max). Tôi cần this.min để được -1 trong trường hợp của tôi (và có, ứng dụng rộng, chúng tôi đã thảo luận nội bộ này trong nhóm và chúng tôi hiểu lý do cho quyết định jQuery, chúng tôi chỉ cần nó là khác), vì vậy các tùy chọn duy nhất của tôi dường như để monkeypatch nguyên mẫu hoặc duy trì plugin của riêng tôi. Tôi cũng thấy rằng họ đang sử dụng kiến ​​trúc "widget" bây giờ, để tải các đối tượng UI của jQuery.

Trong ứng dụng đặc biệt này, kịch bản của tôi được khoảng nạp như vậy:

/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 

Vì vậy, tôi đang nghĩ đến việc đi vào company.utils.js và xác định một monkeypatch như vậy:

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

Tuy nhiên, tôi tò mò nếu đây là cách đúng để monkeypatch đối tượng này. Khá chắc chắn nó là, nhưng tôi nghĩ rằng tôi sẽ hỏi cộng đồng StackOverflow rộng hơn, và cung cấp một cái gì đó googlable cho người tìm kiếm trong tương lai.

Trả lời

4

Vâng, đúng vậy. Ngoài ra, nếu bạn đang sử dụng jQuery UI 1.9, bạn có thể sử dụng nhà máy tiện ích con để xác định tiện ích mở rộng của mình:

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

Mặc dù nó hơi tiết hơn.

+1

whoa whoa whoa, tôi có thể monkeypatch mẫu thử nghiệm như _that_? Điều đó có vẻ ít dễ bị vỡ trong tương lai ... – jcolebrand

Các vấn đề liên quan