У меня есть простой ресурс User $, который использует реализацию кеша $ http по умолчанию, например:
factory('User', function($resource){
return $resource(endpoint + '/user/current/:projectId', {},
{get:
{
cache: true,
method: 'GET'
}
}
);
})
Это работает очень хорошо, т.е. мой сервер вызывается в моем приложении только один раз, затем значение извлекается из кеша.
Но мне нужно обновить значение с сервера после определенной операции. Есть простой способ сделать это?
Спасибо.
angularjs
angularjs-resource
Александр Булте
источник
источник
cache
-{boolean|Cache}
- Если это правда, для кеширования запроса GET будет использоваться кеш $ http по умолчанию, в противном случае, если экземпляр кеша построен сОтветы:
Сохраните логическое значение и получите
$http
кеш:Затем вы можете управлять им, как любым другим кешем, созданным с
$cacheFactory
помощью примера использования, представленного ниже:источник
$resource
завода?Вместо использования логического аргумента в
cache
свойстве каждого из нихaction
вы можете передать экземпляр кеша, созданный с помощью $ cacheFactory, над которым вы можете иметь больший контроль (т.е. очистить кеш).Пример использования:
источник
Я наткнулся на этот поток в поисках чего-то похожего, но обнаружил, что $ resource будет управлять кешем автоматически, поэтому нет необходимости принудительно очищать кеш.
Идея состоит в том, что если у вас есть ресурс, который вы можете запросить, этот ответ на запрос будет кэширован, но если вы сохраните что-то для того же ресурса, ранее кэшированные данные должны быть недействительными, поэтому они будут очищены для вас. Имеет смысл, что так и будет.
Вот код, который я использую для этого (вы можете проигнорировать, возможно, странно выглядящую часть создания фабрики и обратить внимание на тело "класса").
Если вы вызываете функцию listPlayers несколько раз, первый вызов делает HTTP-запрос на получение, а все последующие вызовы кэшируются. Если вы вызываете addPlayer, HTTP-сообщение выполняется, как ожидалось, а затем следующий вызов listPlayers выполнит HTTP-получение (не кешируется).
Это избавляет вас от необходимости управлять чужим ($ http) кешем и пытаться следить за тем, какие URL-адреса используются для запросов, а какие очищают кеши в нужное время.
Я полагаю, что мораль этой истории заключается в том, чтобы поработать с библиотекой, и все будет хорошо ... за исключением каких-либо ошибок или неполных функций, но в Angular их нет;)
ps Все это работает на AngularJS 1.2.0.
источник