2010-05-04 30 views
26

Tôi mới sử dụng Bộ công cụ Dojo. Tôi gặp lỗiDojo và các tiện ích chưa đăng ký

Tried to register widget with id=myButton but that id is already registered 

bất cứ khi nào tôi cố gắng tải nội dung dojo hai lần (nghĩa là tôi tải nội dung HTML thông qua jQuery.Load vào div vùng chứa). Có cách nào để hủy đăng ký các widget đã đăng ký trong dojo không? Tôi đã nhìn thấy một số ví dụ, nhưng tôi không thực sự làm cho họ làm việc.

nút của tôi:

<button dojoType="dijit.form.Button" id="myButton">button</button> 

Trả lời

35

Nếu bạn đang tìm kiếm để unregister widget cụ thể, bạn có thể sử dụng của họ destroy() hoặc destroyRecursive() phương pháp. Cái thứ hai phá hủy bất kỳ widget nào bên trong một cái mà bạn đang hủy (tức là gọi destroyRecursive trên một widget biểu mẫu cũng sẽ phá hủy tất cả các thành phần của form).

Trong trường hợp của bạn, có vẻ như đặt cược tốt nhất của bạn sẽ được để làm điều này trước khi jQuery.load -

var widgets = dijit.findWidgets(<containerDiv>); 
dojo.forEach(widgets, function(w) { 
    w.destroyRecursive(true); 
}); 

Đoạn mã trên sẽ unregister tất cả các vật dụng trong <containerDiv>, duy trì liên DOM Nodes của họ. Để hủy các nút DOM, thay vào đó, hãy chuyển false sang destroyRecursive.

tham khảo:

http://dojotoolkit.org/api/1.3/dijit/_Widget/destroyRecursive

+1

Những người khác đang tìm kiếm giải pháp: Xem thêm câu trả lời bên dưới cho giải pháp không đệ quy. –

+0

Chính xác những gì tôi đang tìm kiếm. Cảm ơn nhiều! – mtchuente

4

này đã làm việc cho tôi:

dijit.byId('myButton').destroy(true); 
1

Tôi nghĩ rằng bạn sẽ khấm khá hơn loại bỏ các id từ nút của bạn và truy cập nó sử dụng một điểm đính kèm. Về cơ bản, bạn có thể làm <button dojoType="dijit.form.Button" data-dojo-attach-point="myButton">button</button>

sau đó trong mã của bạn, bạn sẽ truy cập nó như this.myButton.... tuy nhiên, bạn không chắc chắn phiên bản của dojo bạn đang sử dụng. Điều này sẽ khắc phục bất kỳ vấn đề id nào do dojo sẽ gán một id duy nhất cho nó một cách tự động.

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