Tôi có một câu hỏi liên quan đến đa kế thừa trong ExtJS. Trong khi tôi biết tôi chỉ đơn giản là có thể lặp lại mã để làm cho nó xảy ra, nhưng tôi muốn biết nếu có bất kỳ cách nào để mã nó hiệu quả hơn.Extjs đa thừa kế?
Tôi có thành phần GridPanel
được tùy chỉnh trong khuôn khổ của tôi, được gọi là Kore.ux.grid.GridPanel
. Nó mở rộng Ext.GridPanel
với các chức năng phổ biến bổ sung và cung cấp giao diện cho các hành động REST.
Chẳng bao lâu sau, đồng nghiệp của tôi muốn có EditorGridPanel
cũng được triển khai theo cách tương tự, tức là cô ấy muốn có thể chỉnh sửa và đồng thời có khả năng thực hiện các tác vụ REST dễ dàng.
Câu hỏi của tôi là, có cách nào tôi có thể mở rộng Ext.EditorGridPanel
để nhận các chức năng tùy chỉnh Kore.ux.grid.GridPanel
không?
Xin lỗi vì bất kỳ lỗi ngữ pháp nào và tôi có thể nói lại nó nếu nó khó hiểu. Cảm ơn!!
EDIT
Tôi googled một lần nữa, và tôi thấy chủ đề nói đó là không thể. Có mô hình mã hóa tốt hơn tôi nên làm theo nếu tôi có vấn đề này?
Cảm ơn!
EDIT LẠI
Vì vậy, xin lỗi tôi thấy cấu trúc phù hợp với tôi .. Dưới đây là phương pháp tôi thấy hữu ích với tôi:
var Common = function(){} //abstract class
Ext.apply(Common.prototype, {
a : function(){},
b: function(){}...
});
Ext.ux.SomePanelA = Ext.extend (Ext.Panel, {
stuff : ............
});
Ext.ux.SomePanelB = Ext.extend (Ext.Panel, {
diffStuff : ............
});
Ext.applyIf(Ext.ux.SomePanelA.prototype, Common.prototype);
Ext.apply(Ext.ux.SomePanelB.prototype, Common.prototype);
Mã Nguồn: http://www.sencha.com/forum/showthread.php?48000-multiple-inheritance&p=228271&viewfull=1#post228271
hãy một lần nữa cung cấp gợi ý hữu ích nếu bạn nghĩ rằng bạn có một giải pháp tốt hơn :) Cảm ơn!
PLUGIN! Tại sao tôi quên sự tồn tại của nó !! Cảm ơn đề xuất :) Sẽ xem tôi sẽ kết hợp nó như thế nào trong khung công tác.Cảm ơn :) –
Nhưng điều này có thể không phù hợp với trường hợp của tôi như tùy chỉnh GridPanel của tôi cung cấp tùy chỉnh pagingToolbar, nút định sẵn, hộp tìm kiếm, REST ... vv Plugin có thể không phải là cách :) Cảm ơn bạn đã đề xuất! –
Tại sao không? Bạn có thể truy cập các thành phần tùy chỉnh này từ bên trong plugin để liên kết chức năng của bạn với chúng. Sau khi tất cả, những gì các plugin nào là trong thực tế 'Ext.apply()' chỉ là cách bạn làm điều đó ngay bây giờ. Nó chỉ thêm một chút mạnh mẽ hơn và dễ sử dụng API cho điều đó. – Mchl