「ユーザーデータ」という名前のサービスがあります。リクエストを受け取ったときに「ユーザーデータ」をフェッチする責任があります。
「ユーザーデータ」を表示する責任があるページがあります。ページが読み込まれると、データが取得されて表示されます。
いくつかのボタンを含むメニューがあります。これらのボタンをタップすると、サービス「user-data」にリクエストが送信され、データが変更されます。データが変更されたときに、ページが変更について通知され、ページが適応されるようにしたいと考えています。
私がすることは
- サービス内: "user: change" という名前のイベントを発行し、変更されたデータと共に送信します
クラスUserDataをエクスポート{
ユーザー = [];
....
//- データが変更された場合、
//- イベントを発行する
setUsers(ユーザー) {
this.users = ユーザー;
this.events.publish('user:change', users);
}
}
- このページで、サブスクライブしてこのイベントをキャッチします
エクスポート クラス UserListPage {
ユーザー = [];
//- ページが表示されようとしているときに購読する
ionViewWillEnter() {
this.events.subscribe('user:change', this.updateUsers);
}
//- ページが表示されようとしているときに購読する
ionViewDidLeave() {
this.events.unsubscribe('user:change', this.updateUsers);
}
//- アップデート
updateUsers(userEventData) {
console.log('アップデートしようとしています');
if (userEventData[0] instanceof Array) {
this.users = userEventData[0];
}
console.log(this.users);
}
}
関数updateUsersですべて正常に動作しますが、 this.usersに新しい値が割り当てられていません。とても奇妙です。
時々、デバッグ時に次のようなエラーが発生しました:「読み取り専用プロパティに割り当てようとしました」
なぜなのかご存知ですか?