【发布时间】:2016-10-14 15:30:27
【问题描述】:
我有一个不明白的问题,如果有人能提供帮助,我将不胜感激。
我将 Ionic2 与 Meteor/MongoDb 一起使用。
我有一个光标:
private messages: Mongo.Cursor<Message>;
在服务器上我做了一个插入:
Messages.insert({
chatId: chatId,
senderId: senderId,
content: content,
readByReceiver: false,
createdAt: new Date()
});
它按预期触发了一个 observable:
this.messages.observe({
added: (message) => this.addMessageToLocal(message)
});
private addMessageToLocal(newMessage: Message): void {
// here I print the message, and it is as expected
}
另外,我通过messages 执行forEach,它们都按预期填充。
问题
我的问题出在html。我通过messages 光标循环。它按预期显示每个项目。直到我添加一个message(如上)。那么html中的新message就是undefined。
<template ngFor let-message [ngForOf]="messages">
<div *ngIf="!exists(message)" class="message-wrapper">
<div *ngIf="message.changeDate">
<center><span class="message-datetime">{{message.createdAt | amDateFormat: 'DD MMM YYYY'}}</span></center>
</div>
<div [class]="'message message-' + message.ownership">
<div class="message-content">server:{{message.content}}</div>
<span class="time-tick">
<span *ngIf="message" class="message-timestamp">{{message.createdAt | amDateFormat: 'h:mm a'}}</span>
<div *ngIf="message && message.readByReceiver && senderId == message.senderId">
<span class="checkmark">
<div class="checkmark_stem"></div>
<div class="checkmark_kick"></div>
</span>
</div>
</span>
</div>
</div>
</template>
循环中的最后一个message 项目(新添加的)是undefined。即在从html 调用的*ngIf="!exists(message)" 函数中,我打印message,以及它的undefined。
所以在html 中,我循环了messages 光标,新的光标是undefined。但是,即使在同一个函数(exists())中,我再次循环遍历messages 光标,只是为了测试它,所有项目都不是undefined。
问题
请任何人建议我可以做些什么来不将Cursor 中的最后一个item 设置为undefined?
谢谢
更新
我得到了一些我不明白的东西。
当我按如下方式从html 调用函数时,message 不是undefined:
{{ formatMessage(message) }}
但是如果我如下调用一个函数,那就是undefined:
*ngIf="!exists(message)"
【问题讨论】:
标签: html mongodb meteor ionic2