2017-06-01 24 views
0

私はangularjsとHTML Webアプリケーションを使用しています。私が直面している問題は、サーバーで変更されたデータを更新しないということです。しかし、デバッガでそれを実行すると正常に動作し、期待どおりのデータが更新されます。例えばデータベース値は更新されましたが、クライアントサイドの角度Webアプリケーションでは表示されません

:スクリプトファイル

$http.get('http://localhost:8080/api/database') 
.then(function(objectList){ 
    $scope.objectList = objectList.data; 
}); 

私は新しくを見ることができないhtmlファイル

<tr ng-repeat="object in objectList"> 

私はlocation.path()を使用してobjectListに新しいオブジェクトを追加した後にページを再訪し、routeProviderブラウザのデバッガで同じアクティビティを実行すると、Listに新しいオブジェクトが表示されます。ただし、データはサーバー側のデータベースに正常に追加されます。

答えて

0

上記の質問に答えてください。

//initialize get if not there 
    if (!$httpProvider.defaults.headers.get) { 
     $httpProvider.defaults.headers.get = {};  
    }  

    // Answer edited to include suggestions from comments 
    // because previous version of code introduced browser-related errors 

    //disable IE ajax request caching 
    $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT'; 
    // extra 
    $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache'; 
    $httpProvider.defaults.headers.get['Pragma'] = 'no-cache'; 
0

すべてのAPIリクエストに対してsomeService.jsファイルを作成し、そのサービスをコントローラで使用することをお勧めします。さらに、スコープ変数を空の配列としてグローバルに設定することができます。次に、約束を解決した後でsuccess.dataをスコープ変数にプッシュすると、魅力的に機能するはずです。

これはあなたのコントローラにする必要があります:

$scope.objectList = []; 
var databasePromise = someservice.getDatabase(); 
databasePromise.then(function(success) { 
    $scope.objectList = success.data; 
}, function(failure) { 
    console.log(failure); 
}); 

あなたがそれを固定苦労している場合は、plunkerを共有してください。

+0

あなたが提案したサービスファイルを使用しました。しかし、問題は、ブラウザのデバッガを開いた状態でブラウザでアプリケーションを実行すると、すべてが期待通りに機能し、テンプレートの値が更新されますが、ブラウザのデバッガが閉じられているかのようにhttpリクエストであり、新しいインスタンスではありません – Sakky

+0

Hmm。それは奇妙に聞こえる。プライベートレポジトリでコードを共有していますか?深く見てみましょう。 –

関連する問題