Я использую nativescript-firebase-plugin для получения данных из firebase. Ниже приведен снимок экрана моего экземпляра базы данных.
Я следую примеру из Блог Jen Looper. Код для firebase.service.ts приведен ниже:
getMyWishList(): Observable<any> {
return new Observable((observer: any) => {
let path = 'movie/';
let onValueEvent = (snapshot: any) => {
this.ngZone.run(() => {
// console.log('snapshot'+ snapshot.value);
let results = this.handleSnapshot(snapshot.value);
console.log('jjjj');
observer.next(results);
});
};
firebase.addValueEventListener(onValueEvent, `/${path}`);
});
}
handleSnapshot(data: any) {
this._allItems = [];
if (data) {
for (let id in data) {
this._allItems.push(data);
}
this.publishUpdates();
}
return this._allItems;
}
publishUpdates() {
// here, we sort must emit a *new* value (immutability!)
this._allItems.sort(function(a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
});
this.items.next([...this._allItems]);
}
Вызывается эта служба в моем home.compon enet .ts, используя
`
this.datas$ = <any>this.firebaseService.getMyWishList();
`
Затем в home.component. html попытался использовать nativescript listview для отображения данных экземпляра базы данных. `
<StackLayout class="card">
<ListView [items]="datas$ | async" height="300">
<GridLayout>
<ng-template let-item="item">
<GridLayout columns="auto,*,auto">
<Label class="m-5" col="1" [text]="item.link"></Label> //Line 1
<Label class="m-5" col="1" [text]="item.name"></Label> //Line2
</GridLayout>
</ng-template>
</GridLayout>
</ListView>
</StackLayout>
`
Но listView пуст, когда я использую item.link или item.name. Но когда я использую item.video1.link, он работает. Теперь я предполагаю, что документ mov ie является элементом в listView, но мне нужно создавать документы внутри / mov ie как элемент и динамически отображают их значение. Также, если listView работает таким образом, то как это полезно, поскольку мы сможем отобразить только одну строку документа. Пожалуйста, помогите мне найти здесь проблему.