2014-10-23 14 views
5

Tôi đang sử dụng Backbone trong một dự án di động. Hãy nói rằng tôi đã có một lớp mẫu như thế này.Chỉ định tất cả các thuộc tính trong Backbone.Model

var Person = Backbone.extend({ 

}); 

Các Person lớp các thuộc tính sau firstName, lastName, agegender. Tôi muốn chỉ định tất cả các thuộc tính này trong lớp. Vì vậy, các nhà phát triển khác biết các thuộc tính mà họ đã đặt cho cá thể là gì. Sau khi đi qua các tài liệu hướng dẫn tôi thấy có một tài sản gọi là defaults mà tôi có thể sử dụng.

var Person = Backbone.extend({ 
    defaults: { 
     firstName: '', 
     lastName: '', 
     age: null, 
     gender: null 
    } 
}); 

Nhưng tôi thấy mục đích của thuộc tính defaults khác nhau đúng không? Không cho mọi người biết các thuộc tính mà lớp đó chứa. Có cách nào tốt hơn tôi có thể đạt được điều này?

Trả lời

1

Trong dự án của chúng tôi, chúng tôi sử dụng defaults cho mục đích này. Nó giải quyết vấn đề khá tốt, và cũng có thể phục vụ như là một điểm tài liệu. Không có cách nào khác để làm điều này mà tôi biết. Tuy nhiên, bạn vẫn có thể sử dụng các nhận xét lỗi thời :)

1

Bạn có thể viết các hàm getter, vì vậy các thuộc tính của mô hình có sẵn trực tiếp dưới dạng API công khai của mô hình.

Bằng cách đó, bất kỳ nhà phát triển sử dụng các đối tượng mô hình sẽ có thể xem đó là tài sản công cộng (giả sử cô sử dụng một IDE phong nha) mà không cần mở file để chỉnh sửa (tại sao làm điều đó?), Ví dụ .:

var Person = Backbone.extend({ 
    defaults: { 
     firstName: '', 
     // ... 
    }, 
    getFirstName: function() { 
     return this.attributes.firstName; 
    } 
    // ... 
}); 
Các vấn đề liên quan