我是初学者ionic2
实际上我正在使用FCM插件进行推送通知。
这是我的应用程序component.ts
FCMPlugin.onNotification(function(d){
if(d.wasTapped){
console.log(d);
var nav=self.appCtrl.getActiveNav().setRoot(NotificationsPage);
})
它是wrk完美。而且,当我单击通知页面重定向到各自页面(通知页)。
我从Firebase Collections中检索了数据并分配给数组。
数组变量名称是通知。我安装了数组值。它的工作正常。
使用VirtualScroll显示在UI中。
在我的HTML代码下方。这是相应的页面(通知页)
<ion-card class="card" [virtualScroll]="Notifications">
<ion-item (click)="navigate(Notifications.value.TYPE,Notifications.value.FROM,Notifications.value.$key,Notifications.value.TO,Notifications.value.MSG,Notifications.value.STATUS,Notifications.time)" *virtualItem="let Notification">
<ion-avatar item-left>
<img *ngIf="!Notification.userval.FILE" src="https://firebasestorage.googleapis.com/v0/b/apartments-ea9e5.appspot.com/o/default.png?alt=media&token=a64af538-17a7-46e1-9e38-383c1df060cf">
<img *ngIf="Notification.userval.FILE" [src]="Notifications.userval.FILE">
</ion-avatar>
<p>{{Notification.value.MSG}}</p>
<p>{{Notification.time}}</p>
<p style="text-align:right;color:#334bfa;">{{Notifications.value.TYPE}}</p>
</ion-item>
</ion-card>
在我的通知页面组件(TS文件)下方。
this.authservice.getalluser().first().subscribe(namelist=>
{
var users=[];
namelist.forEach(userval=>
{
users.push(userval.val());
})
for(var i in val)
{
this.Time=val[i].SEND_TIME;
var timeagoIns = timeago();
var result=timeagoIns.format(this.Time);
console.log(result);
var user=users.filter(users=>users.USER_ID.toString() === val[i].FROM.toString());
this.Notifications.push({
value:val[i],
time:result,
userval:user[0]
})
Console.log(this.Notifications);
})
数组值不更新UI。但我会委托通知值。
的工作正常。为什么没有在数组值中更新UI。
如何解决此问题。
请建议我,
谢谢。
您是否这样更新您的数组?
push.on('notification', (data) => {
// update array
});
如果您以这种方式更新数组,则UI不应更新。因为您的数组现在不在ngzone中。在这种情况下,您可以使用此功能,
push.on('notification', (data) => {
this.ngZone.run(() => {
// update array
});
});