Đi qua tài liệu Ember.js, tôi không thể tìm ra cách tạo các mô hình lồng nhau. Giả sử rằng tôi có JSON sau:Làm thế nào để tạo các mô hình lồng nhau trong Ember.js?
App.jsonObject = {
id: 1812,
name: 'Brokerage Account',
positions: [
{
symbol: 'AAPL',
quantity: '300'
},
{
symbol: 'GOOG',
quantity: '500'
}
]
}
Nếu tôi tạo ra một đối tượng mô hình như thế này
App.account = Ember.Object.create(App.jsonObject);
chỉ các thuộc cấp cao nhất (id và tên) được liên kết với các mẫu, các mảng vị trí lồng nhau không không bị ràng buộc một cách chính xác. Kết quả là việc thêm, xóa hoặc cập nhật vị trí không ảnh hưởng đến màn hình. Có một cách thủ công hoặc tự động để chuyển đổi mảng vị trí để nó được ràng buộc nhận thức (tương tự như một ObservableCollection trong WPF)?
Tôi đã tạo một jsfiddle để thử nghiệm với điều này: http://jsfiddle.net/nareshbhatia/357sg/. Như bạn có thể thấy, những thay đổi đối với các thuộc tính mức cao nhất được phản ánh trong đầu ra, nhưng bất kỳ thay đổi nào đối với các vị trí đều không. Tôi sẽ đánh giá rất cao bất kỳ gợi ý về cách làm điều này.
Cảm ơn.
Naresh
Edit: Tình hình lý tưởng sẽ là nếu Ember.js bằng cách nào đó có thể phân tích thức ăn JSON của tôi vào đối tượng Ember.js lồng nhau. Ví dụ, nếu tôi định nghĩa một cách rõ ràng các lớp của tôi như sau, có thể hỗ trợ Ember.js để tạo ra các đối tượng thích hợp không?
App.Account = Ember.Object.extend({
id: null,
name: null,
positions: Ember.ArrayProxy.create()
});
App.Position = Ember.Object.extend({
symbol: null,
quantity: null,
lastTrade: null
});
App.account = App.Account.create(App.jsonObject);
Mục tiêu cuối cùng của tôi là hiển thị cấu trúc này trong lưới phân cấp có thể mở rộng/thu gọn ở cấp tài khoản. Đến từ thế giới WPF/Silverlight, nó là khá dễ dàng để làm một cái gì đó như thế này. Tất cả những gì bạn cần làm là chỉ định một mẫu lồng nhau cho lưới trong XAML và nó biết cách diễn giải mô hình của bạn. Bạn có thể tìm thấy một ví dụ here - nó không phải là quá khó khăn để làm theo. Tôi tự hỏi nếu một cái gì đó như thế này là có thể trong Ember.js.
Tôi không quen thuộc với WPF hoặc điều khiển của nó (không hoạt động w/it trong gần 4 năm), nhưng có vẻ như một thứ như thế không quá tệ để thực hiện trong Ember & Handlebars. –