2017-04-03 5 views
0

イオン2では、ストレージサービスの問題が繰り返し発生しています。私は正常に設定し、格納されたデータを取得しました。しかし、私が何かを保存すると、ページ/アプリケーションをリフレッシュしない限り、他のページにはアクセスできません。イオン2ストレージサービスと同期してストレージにアクセスする

例1:私は編集のコンタクトページにプッシュ接触

の編集、変更を行い、その後、saveEdits。 saveEditsは正常な連絡先に変更を行いますが、アプリケーションが更新されるまで連絡先リストを更新できません。

HTML:

<button (click)="saveEdits(newName, newPostCode)"ion-button round>Save Edits</button> 

活字体:

saveEdits(newName, newPostCode){ 
    console.log("saveid"+this.id); 
    this.name = newName; //saves property 
    this.postcode = newPostCode; //saves property 
    this.items[this.id] = {"id": this.id, "Name": newName, "PostCode": newPostCode}; 
    this.storage.set('myStore',this.items); 
    //this.navCtrl.pop(ContactPage); 
    } 

例2:私は連絡先を反復処理し、無線警告ボックスの一覧に表示し、別のページで、別のページにアクセスするの接点

。繰り返しますが、連絡先は正常に表示されますが、連絡先の追加ページで連絡先を追加すると、新しい連絡先がラジオの警告ボックスの一覧に表示されません。

addDests(){ 
    console.log('adddests'); 
    { 
    let alert = this.alertCtrl.create(); 
    alert.setTitle('Choose Friend'); 

    for(let i = 0; i<this.items.length; i++){ 
     console.log('hello'); 
     alert.addInput({ 
     type: 'radio', 
     label: this.items[i].Name, 
     value: this.items[i].PostCode, 
     checked: false 
    }); 
    } 



    alert.addButton('Cancel'); 
    alert.addButton({ 
     text: 'OK', 
     handler: data => { 
     console.log(data); 
     } 
    }); 
    alert.present(); 
    } 
    } 

答えて

1

あなたは変数が指しているの参照変更している:私は仮定

this.items[this.id] = {"id": this.id, "Name": newName, "PostCode": newPostCode}; 

をリストがthis.itemsで参照されている配列を反復(ngFor)していますか?はいの場合は、再初期化するのではなく、this.items[this.id]のプロパティを直接更新してください。

this.items[this.id].Name = newName; 
this.items[this.id].PostCode = newPostCode; 

(ちなみに、私はあなたの財産の命名と一致するようにお勧めしたい:IDと名前、またはidと名前(大文字のどちらかは問題では)!)。

使用しているオブジェクトへの参照が変更されていない場合は、常に「リスト」ビューが更新されます。唯一の例外は、第三者のライブラリに与えられたコールバックで行われた更新です。その場合、NgZoneを使用してAngularに「強制的に」アップデートを考慮させることができます。

また、Observableに関するAlexanderの素晴らしいアドバイスをご覧ください。

+0

他の回答について私のコメントをチェックすることはできますか? – Dansmith12

1

あなたは変更についての加入者(他のページ&コンポーネント)を通知するために、観測可能なプロパティと角度プロバイダ(複数可)を使用する必要があります。例えば

この記事を読ん:http://blog.angular-university.io/how-to-build-angular2-apps-using-rxjs-observable-data-services-pitfalls-to-avoid/

これに関する多くの情報があります:https://www.google.com/search?q=angular+provider+observable

+0

問題は1つで、次のコードで正しいデータをコンソール化できます。var contacts = obs.subscribe((data)=> { console.log(data); });どのようにしてこのデータにアクセスできますか?上記のように変数に代入しようとしましたが、サブスクライバJSONファイルを返します – Dansmith12

+0

関数を呼び出してデータをパラメータとして渡しましたが、常に未定義を返します – Dansmith12

+0

' (listener)」と呼ばれている。この関数で直接更新を行うことも、新しい最新データをUI更新専用の関数(たとえば)に渡すこともできます。 – VinceOPS

関連する問題