私はIonic2とMeteorを使っています。私はしかし、this
オブジェクトの範囲に関連するJavascript/Typescriptの問題があります。Javascript/Typescript 'this' scope
適切なレベルでthis
にハンドルがない場合はbind
を使用する必要があります。readです。
私はおそらく、次のことを試しますが、関数を呼び出すときにエラーが発生するので、概念を理解できません。
this.subscribe('messages', this.activeChat._id, this.senderId,() => {
this.autorun(() => {
let promiseMessages: Promise<Mongo.Collection<Message>> = this.findMessages();
promiseMessages.then((messageData: Mongo.Collection<Message>) => {
messageData.find().forEach(function (message: Message) {
setLocalMessage.bind(message);
});
});
});
と
private setLocalMessage(message: Message): void {
this.localMessageCollection.insert(message);
}
私はアプリを構築しようとすると、私は次のエラーを取得する:
ERROR in ./app/pages/messages/messages.ts (72,19): error TS2304: Cannot find name 'setLocalMessage'.
UPDATE
以下のアドバイスをありがとうございます。
私は今、以下を使用しており、動作します。
let promiseMessages: Promise<Mongo.Collection<Message>> = this.findMessages();
promiseMessages.then((messageData: Mongo.Collection<Message>) => {
messageData.find().forEach((message: Message) => {
this.setLocalMessage(message);
});
});
これはタイプミスかもしれませんが、あなたの関数はsetLocal ** Message **と宣言されています。エラーはsetLocal ** Nessage **です。これはタイプミスか実際の問題ですか? –
これは、 "typescript"タグを追加する価値があるかもしれません(これは、 "javascript"タグの代わりに)、これはタイスクリプトコードです。 – UnholySheep
申し訳ありませんが、今すぐ修正されました。 – Richard