0

私は数日間この頭を叩いていて、それを理解できないようです...AngularJS Factory最初のAPI呼び出しの後、サーバーにpingを実行せず、子のスティッキー状態の古いデータを返します。

私のルートは次のようになります。

$stateProvider.state({ 
 
      name: 'core.portfolio', 
 
      url: '/portfolio', 
 
      controller: 'portfolioController', 
 
      controllerAs: 'vm', 
 
      templateUrl: 'app/portfolio/partials/base.html', 
 
      deepStateRedirect: true, 
 
      sticky: true, 
 
      resolve: { 
 
       portfolioPrepService: function (portfolioService) { 
 
        return portfolioService.getPortfolio(); 
 

 
       }, 
 

 
      } 
 
     }).state({ 
 
       name: 'core.portfolio.company', 
 
       url: '/1/:companyId', 
 
       resolve: { 
 
        companyPrepService: companyPrepService 
 
       }, 
 
       views: { 
 
        'company': { 
 
         controller: 'CompanyController', 
 
         controllerAs: 'vm', 
 
         templateUrl: 'app/portfolio/company/company.tmpl.html' 
 

 
        } 
 
       }, 
 
      sticky: true, 
 
      deepStateRedirect: true 
 

 
      } 
 
     );

などのように私のサービス:

function companyService($http, API_CONFIG) { 
 

 
     var service = {}; 
 
     service = { 
 
      getCompany: getCompany 
 
     }; 
 
     function getCompany(id) { 
 
      return $http({ 
 
       method: 'GET', 
 
       url: API_CONFIG.url + 'companies/' + id + '/?embedded={"round":1}', 
 
       cache: false 
 
      }) 
 
     } 
 
     return service; 
 

 

 
    }

私は私のCompanyControllerでAPIの呼び出しを行い、 companyService.getCompany(companyId) サービスは、古いオブジェクトを返す、と私は私のサーバーのログを見ると、私はすべてのRESTが行われて呼び出しが表示されません。

私はページをリフレッシュすると、(PrepServiceに従って)APIコールが再度行われますが、CompanyControllerでトリガされると、サーバー上でRESTヒットのない古くなったデータが返されます。

これはなぜ起こっているのですか?解決策と関係があるのでしょうか、それとも粘着状態にあるのでしょうか?

+0

XHRログを共有できますか? –

+0

ああ、サイズ(ディスクキャッシュから)のように見えますが、私はキャッシュがfalseに設定されているので、私はこの時点では無名です。 – Dominooch

答えて

0

のための開発ツールのネットワークタブを確認し、この問題によると、ここでのハックがあるように思え

$http disabling caching does not work #1586

var req = { 
 
method: 'GET', 
 
url: 'http://example.com', 
 
headers: { 
 
    'Cache-Control' : 'no-cache' 
 
} 
 
}
:問題を解決する方法で

これらのヘッダーで各API呼び出しを呼び出す必要があります。これを各コールに追加し、キャッシュをフラッシュします。その後は泳動しなければならない。

0

$httpリターンの約束、だから、このようにそれをやってみてください

companyService.getCompany(companyId).then(function(res){ 
    console.log(res) 
}) 

、あなたのすべての要求

+0

これは私のコントローラー(上では詳しく説明していません)でやっていることですが、約束を返すとしても、サーバーログでAPIコールが表示されます。 – Dominooch

+0

任意のリクエストについて開発者ツールのネットワークチェックタブ –

関連する問題