2010-01-22 26 views
6

Tôi có một câu hỏi liên quan đến phương pháp thực hành, độ tin cậy và thực hành tốt nhất khi sử dụng phương thức update() của Extjs, so với cập nhật trực tiếp innerHTML của phần tử dom của phần tử Ext.Câu hỏi bằng cách sử dụng bản cập nhật Ext() thay vì dom.innerHTML

Hãy xem xét hai câu:

Ext.fly('element-id').dom.innerHTML = 'Welcome, Dude!'; 

Ext.fly('element.id').update('Welcome, Dude!', false); 

Tôi không cần phải eval() bất kỳ kịch bản, và tôi chắc chắn rằng update() đưa vào xem xét bất kỳ quirks trình duyệt.


Ngoài ra, không ai biết nếu sử dụng:

Ext.fly('element-id').dom.innerHTML 

cũng giống như

d.getElementById('element-id').innerHTML 

?
Khả năng tương thích với nền tảng trình duyệt và quan trọng, và nếu cả hai về cơ bản giống nhau, thì bỏ qua Ext.element.dom.innerHTML hoàn toàn cho update() có lẽ sẽ là giải pháp tốt nhất của tôi.

Cảm ơn trước sự giúp đỡ của bạn,

Brian

Trả lời

4

Nếu bạn không cần phải tải tập lệnh tự động vào html cập nhật của bạn hay xử lý một callback sau khi cập nhật, sau đó hai phương pháp mà bạn đã vạch ra là tương đương. Phần lớn mã trong update() thêm khả năng tải tập lệnh và gọi lại. Bên trong, nó chỉ đơn giản là đặt innerHTML để thực hiện thay thế nội dung.

Ext.fly().dom trả về nút DOM đơn giản, vì vậy có, nó tương đương với kết quả của getElementById() về nút mà nó trỏ đến. Sự tinh tế duy nhất để hiểu là sự khác biệt giữa Ext.fly() và Ext.get(). Ext.fly() trả về một cá thể được chia sẻ của đối tượng trình bao bọc nút (một thừa kế). Như vậy, trường hợp đó sau đó có thể trỏ đến một nút khác đằng sau hậu trường nếu bất kỳ mã nào khác gọi là Ext.fly(), bao gồm cả mã Ext bên trong. Như vậy, kết quả của một cuộc gọi đến Ext.fly() chỉ nên được sử dụng cho các hoạt động nguyên tử và không được sử dụng lại như một đối tượng tồn tại lâu dài. Ext.get().dom mặt khác trả về một cá thể đối tượng mới, duy nhất, và theo nghĩa đó, sẽ giống như getElementById().

+0

Vì vậy, để đặt nó về cơ bản, trừ khi tôi muốn xử lý một cuộc gọi lại hoặc eval một số kịch bản, sau đó sử dụng 'update()' là nhiều hơn hoặc ít hơn quá mức cần thiết. Tôi có hiểu chính xác không? Mối quan tâm chính của tôi là khả năng tương thích với trình duyệt. Vì vậy, trong những điều khoản, không 'update()' có bất kỳ lợi thế hơn 'Ext.fly(). Dom'? Cảm ơn !! – DondeEstaMiCulo

+0

Nó không có sự khác biệt. Nó không quá mức - nó giống hệt nhau. Không có sự khác biệt về tính tương thích. –

2

Tôi nghĩ bạn đã trả lời câu hỏi của riêng mình: "Khả năng tương thích với nền tảng trình duyệt và quan trọng, và nếu cả hai về cơ bản giống nhau, thì bỏ Ext.element.dom.innerHTML hoàn toàn cho bản cập nhật() có lẽ sẽ là giải pháp tốt nhất của tôi . " Các thư viện JS được dự định (một phần) để trừu tượng hóa các khác biệt về trình duyệt; cập nhật là một ví dụ.

@bmoeskau đã viết ở trên, bản cập nhật() cung cấp chức năng bổ sung mà bạn không cần ngay cho vấn đề hiện tại của mình. Tuy nhiên, cập nhật là một lựa chọn tốt.

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