Tôi đang cố gắng viết một khung nhìn Backbone cho một trình duyệt đối tượng được thiết kế để được triển khai ở một vài nơi với các kiểu đối tượng khác nhau và hoạt động hơi khác nhau. Làm thế nào tôi có thể đạt được một số tái sử dụng mã tốt.Inheritance Backbone View
Tôi đã thử đơn giản mở rộng khung nhìn xương sống trong trình duyệt của mình và sau đó mở rộng trình duyệt trong quá trình triển khai của tôi, tuy nhiên điều này khiến tôi có một số thuộc tính được chia sẻ. Đây là một hiệu ứng không mong muốn vì dữ liệu được nối vào tất cả các triển khai với mọi trình tạo trình duyệt.
Ai đó có thể làm sáng tỏ một cách để giải quyết vấn đề này hoặc có thể là giải pháp thay thế?
Dưới đây là một số ví dụ mã để cung cấp cho bạn một ý tưởng tốt hơn về cách nó hiện đang đứng:
var BrowserView = Backbone.View;
_.extend(BrowserView.prototype, Backbone.View.prototype, {
className: 'browser',
collections: [],
events: {
},
_events:{
},
initialize: function() {
this._initialize();
},
render: function() {
this._render();
},
_initialize: function() {
this.container = $(this.make('div', {class: 'container'}));
this.$el.append(this.container);
if (this.options.collections) {
this.collections = [];
_.each(this.options.collections, this.add, this);
}
_.extend(this.events, this._events);
this.delegateEvents();
},
_render: function() {
this.container.empty();
_.each(this.collections, function (view) {
this.container.append(view.el);
view.render();
}, this);
}
});
BrowserView.extend = Backbone.View.extend;
var ContactBrowserView = BrowserView.extend({
});
Như mọi khi tôi hơn phản hồi chào đón liên quan đến bất kỳ khía cạnh của đoạn mã tôi đã cung cấp.
Cảm ơn bạn, Alex
EDIT Vấn đề của tôi là các lớp học phụ đang chia sẻ bộ sưu tập bất động sản. Đây là một ví dụ về giải pháp của riêng tôi mà khởi tạo thuộc tính bộ sưu tập thông qua một phương thức kế thừa. jsfiddle.net/JhZXh/3
Hi Sander, xin lỗi câu hỏi của tôi là không đủ mô tả. Tôi cũng đã tạo ra một JS-Fiddle để minh chứng tốt hơn cốt lõi của vấn đề của tôi. Có lẽ tôi nên làm điều này ngay từ đầu. Vấn đề của tôi là các lớp con đang chia sẻ thuộc tính collection. http://jsfiddle.net/JhZXh/3/ –
trong mọi trường hợp, chỉ cần thêm jsfiddle và mô tả cho bài đăng gốc của bạn, không phải ai cũng sẽ tìm thấy nó ở đây trong phần bình luận. tôi sẽ xem xét nó và xem liệu tôi có thể đưa ra một câu trả lời phù hợp hơn không. – Sander