2011-06-28 24 views
9

Tôi có một lớp xác định một số giá trị mặc định và một lớp con xác định một số giá trị mặc định. Nhưng khi tôi tạo một thể hiện của lớp con nó chỉ nhìn vào các giá trị mặc định cục bộ và không hợp nhất các giá trị mặc định của nó với các giá trị mặc định của cha mẹ. Có cách nào đơn giản để làm điều này mà không kết hợp rõ ràng các giá trị mặc định cục bộ với các giá trị mặc định của hàm cha trong hàm initialize của mỗi lớp con?Trong Backbone.js làm thế nào tôi có thể nhận được mặc định mô hình siêu lớp để hoạt động như mặc định cho lớp con?

var Inventory = Backbone.Model.extend({ 
    defaults: { 
     cat: 3, 
     dog: 5 
    } 
}); 

var ExtendedInventory = Inventory.extend({ 
    defaults: { 
     rabbit: 25 
    } 
}); 

var ei = new ExtendedInventory({}); 
console.log(ei.attributes); 

đầu ra này:

{rabbit: 25} 

Không phải những gì tôi muốn:

{cat: 3, dog: 5, rabbit: 25} 

Trả lời

7

Bạn không thể làm điều đó như thế. Bạn sẽ phải làm điều đó sau khi phân lớp

_.extend(ExtendedInventory.prototype.defaults, {rabbit: 25}); 

Đặt điều này sau định nghĩa mô hình của bạn.

+1

Tương tự áp dụng cho xem thuộc tính sự kiện. – Julien

+1

Vui lòng xem câu hỏi [this] (http://stackoverflow.com/questions/6549149/extending-the-defaults-of-a-model-superclass-in-backbone-js) để thảo luận về cách câu trả lời này thay đổi Khoảng không quảng cáo. prototype.defaults cũng như ExtendedInventory.prototype.defaults vì chúng là cùng một tham chiếu đối tượng. – c3rin

+0

Bạn đang nắm bắt tốt đẹp. – Julien

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