Tôi đang tạo ứng dụng thử nghiệm (Ionic 2) sử dụng Firebase và AngularFire2 (hiện đang ở dạng alpha). Đối với điều này tôi đang làm theo hướng dẫn này từ Aaron Saunders làm căn cứ:Quan sát lồng nhau trong Angular2 sử dụng AngularFire2 không hiển thị trong chế độ xem
http://www.clearlyinnovative.com/integrating-firebase-with-angularfire2-into-angular2-ionic2-part-2 https://github.com/aaronksaunders/ionic2-angularfire-sample
Dưới đây là home.ts tôi và home.html tôi.
this.projects = af.list('/items').map((items) => {
return items.map(item => {
item.meta = af.object(`/item_meta/${item.$key}`)
return item
})
})
Bằng cách này làm tổ trở về quan sát bởi AngularFire2 đã được chứng minh trong bài trình bày sau đây: https://youtu.be/ngnSOTSS8Q8?t=1h6m37s
Đây là quan điểm của tôi:
<ion-card *ngFor="#item of items | async">
<ion-card-header>
{{item.name}}
</ion-card-header>
<ion-card-content>
{{item.description}}
<br>
{{item.meta.stockPrice | async}}
</ion-card-content>
</ion-card>
Sự khác biệt chính với ví dụ trong bài thuyết trình tôi tiếp theo là một thực tế rằng tôi đang lồng một 'đối tượng' có thể quan sát bên trong một 'danh sách/mảng' có thể quan sát được. Thay vào đó, họ thêm danh sách trong danh sách. Hậu quả của việc này là tôi đang cố gắng hiển thị {{item.meta.stockPrice}} trong chế độ xem của tôi trực tiếp thay vì làm tổ một ngFor.
Đây là những gì dữ liệu của tôi trông giống như:
{
"items":
{
"item1":{
"name": "Item 1",
"description": "1234"
},
"item2":{
"name": "Item 2",
"description": "abcd"
}
}
"items_meta"{
"item1":{
"stockPrice": 1234,
"moarData": "derp"
},
"item2":{
"stockPrice": 386,
"moarData": "lolz"
}
}
}
tôi dường như không thể tìm ra lý do tại sao đối tượng không muốn để render. Nếu tôi xuất nó sang JSON, nó cho thấy dữ liệu ở đó. Xin lưu ý rằng tôi mới đến Angular2 và vẫn quấn đầu quanh những thay đổi từ Angular1. Tôi đang làm gì sai?
Edit: Tôi đã cập nhật các thông tin trên và thêm vào cấu trúc dữ liệu của tôi để làm cho nó rõ ràng hơn
có thể tôi đang xem cái gì đó nhưng tôi nghĩ mã của tôi về cơ bản giống nhau. Nếu bạn thay đổi mã của bạn thành: {{(user.messages.message-id-100.text | async}} thì nó có hoạt động không? Đối với tôi nó đưa ra một lỗi. In nó như JSON hoạt động tốt. Tuy nhiên, tôi đã biết các phím (ví dụ: user.lastActivity.name) và cần hiển thị giá trị trong dạng xem dưới dạng văn bản (ví dụ: chơi game) – DivZero
Công việc tuyệt vời trên các bài đăng trên blog btw, đó là một điểm khởi đầu tuyệt vời!Xin lưu ý rằng mọi thứ đang vi phạm nếu bạn cố cập nhật. Angular 2 vừa mới chuyển sang RC, Ionic 2 có một nhánh riêng biệt di chuyển đến Angular RC và AngularFire vừa đi vào bản beta (với các tài liệu và truy vấn tốt hơn) đòi hỏi cần đến Angular RC. Tuy nhiên họ không chơi tốt đẹp với nhau được nêu ra ;-) – DivZero
chính xác những gì bạn đang cố gắng để làm ... '(user.messages.message-id-100.text | async}}' sẽ không hoạt động bởi vì nó không phải là một quan sát được ... và bạn đang hỏi nhiều câu hỏi vào thời điểm mà làm cho nó khó trả lời câu hỏi của bạn ... bạn cần cung cấp thêm thông tin về cấu trúc dữ liệu của mình –