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; 
 

 

 
    }

Когда я сделать вызов API в моем CompanyController, companyService.getCompany(companyId) служба возвращает несвежий объект, и когда я смотрю на свои логи сервера, я не вижу REST вызовы делаются.

Когда я обновляю страницу, вызов api выполняется снова (согласно PrepService), но при запуске на CompanyController он возвращает устаревшие данные без какого-либо удара REST на сервере.

Кто-нибудь не знает, почему это происходит? Имеет ли это какое-то отношение к разрешению или, возможно, что оно находится в липком состоянии?

+0

Можете ли вы поделиться журналом XHR? –

+0

А, похоже, что под размером это «(из дискового кэша)», но в кеше i установлено значение «ложь», поэтому я не знаю. – 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

проверить сетевую вкладку инструмента разработчика для любого запроса –