「ユーザーデータ」という名前のサービスがあります。リクエストを受け取ったときに「ユーザーデータ」をフェッチする責任があります。
「ユーザーデータ」を表示する責任があるページがあります。ページが読み込まれると、データが取得されて表示されます。
いくつかのボタンを含むメニューがあります。これらのボタンをタップすると、サービス「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に新しい値が割り当てられていません。とても奇妙です。
時々、デバッグ時に次のようなエラーが発生しました:「読み取り専用プロパティに割り当てようとしました」
なぜなのかご存知ですか?