3

ノード/エクスプレスAPIをポーリングするIonicアプリがあります。イオンビューでAPIのデータが更新されない

アプリが起動すると、APIからJSONデータを正しく取得します。データを更新してIonicアプリから再度取得すると、アプリが起動された時点からの古いデータが引き続き表示されます。

角度キャッシュとIonicキャッシュの両方をさまざまな方法でクリアしようとしましたが、違いはありません。

我々が試した事がある:

$ionicConfigProvider.views.maxCache(0);、テンプレート上cache-view="false"は、状態にcache: falseを設定し、$state.go($state.currentState, {}, {reload : true});$ionicHistory.clearHistory();$ionicHistory.clearHistory();$route.reload$window.location.reloadを経由して状態にアクセスしてみました。

コントローラー:

function contactsController(Contacts, $stateParams) { 

    var vm = this; 
    var params = $stateParams.id; 
    Contacts.getAllContacts.then(function success(response) { 
    vm.data = response.data; 
    vm.selectedContact = response.data[params]; 
    }); 
} 

工場

function contactsFactory($http, $stateParams) { 
    return { 
    getAllContacts: $http.get('https://api-call'), 
    update: function(url) { 
     $http.patch('https://api-call/update', [$stateParams.id, url]); 
    }, 
    }; 
} 

エクスプレスバックエンド

app.get('/', function (req, res) { 
    ref.once("value", function(snapshot){ 
    res.send(snapshot.val()); 
    }); 
}); 

app.patch('/update', function(req, res) { 
    var id = req.body[0]; 
    ref.child(id).update({"imageURL": req.body[1]}); 
}); 

おかげ

+0

ルーティングと表示の両方でキャッシュを無効にしましたか? – abdoutelb

+0

はい、ありがとうございました。私はちょうど既に試みたすべてを含めるために投稿を更新しました。 – bkgrubb

答えて

3
  • モディこの

<ion-view cache-view="false" view-title="My Title!">

+0

ありがとう、私たちはすでに実際に試したことがあります。 – bkgrubb

+0

これを試してください、これは解決策ではありませんが、ページを更新して変更を適用し、この関数を貼り付けてng-init = "doRefresh()" $ scope.doRefresh = function(){ $ scopeを呼び出します。 $ broadcast( 'scroll.refreshComplete'); }; – Gopinath

+0

ありがとう、私たちはこれを試して、ng-clickイベントにもその関数を入れようとしましたが、一時的にデータをクリアしますが、古いデータで再度リフレッシュします。 – bkgrubb

2

ようFYビューはconsole.log(vm)を試してみて、更新されたデータが得られることを確認してください。更新されたデータが記録されていても更新されていないビューのみがある場合は、cache-view="false"と一緒に次のように試してみます。 Firebaseのonce()を使用することにより

$scope.apply(function(){ 
    // update your view here 
    vm.data = response.data; 
    vm.selectedContact = response.data[params]; 
}); 
+0

'console.log'ging vmは、更新されたデータが決して得られないことを示します.vmは、アプリの起動後に初めてAPIからフェッチするときのデータを常に含んでいます。 – bkgrubb

+0

あなたの 'contactsFactory'に' factory'の代わりに 'service'を使ってみることができますか? –

+0

私たちは工場の代わりにサービスを使用しようとしましたが、残念ながらまったく同じ結果を出すようです。ありがとう。 – bkgrubb

1

あなたが最初のもの以外にもvalueに接続されているすべてのコールバックを効果的に除去している:指定されたイベントタイプの正確に一つのイベントのために

聞き、その後、

を聴い 停止

代わりにon()に切り替えてみてください。

app.get('/', function (req, res) { 
    ref.on("value", function(snapshot){ 
    res.send(snapshot.val()); 
    }); 
}); 

私はイオン2開き層は、Androidデバイス上でマップをインストールすると、私はオープンの層がアンドロイドの画面上で正常にマップを参照することができます

+1

私たちのAPIコールは、あなたが何回呼び出しても、あなたが言うように一度しか起こっていないようです。しかし、once()の代わりにon()を使用すると、アクセス時にバックエンドがクラッシュします。それは、問題を引き起こしている別の問題を示している可能性があります。ありがとう。 – bkgrubb

0

それは...あなたの問題は全くのキャッシングに関連していないのかもしれ。しかし、私はそれを閉じて再びアプリを開くと、私は地図を見ることができません。この問題を解決するには、私は何ですか:私は、アプリをアンインストールし、私のデバイスを再起動し、その後、私はマップを見ることができるアプリを再インストールします。 私に恒久的な修正をお願いします。アプリの設定でこれを置く

1

はコンフィグで

$ionicConfigProvider.views.maxCache(0); 

$ionicConfigProvider依存して私のために働きました。

関連する問題