我在Angular JS中更新资源时尝试删除特定的$ http缓存条目,但当我尝试使用URL作为密钥get
时,它返回null
。我知道资源在缓存中,因为当我下次获取资源时,我得到旧的缓存值而不是更新的值。
var id = 'org.couchdb.user:gareth';
var changes = { ... };
$http.put('/_users/' + id, changes).success(function() {
$cacheFactory.get('$http').remove('/_users/' + id);
});
为什么没有删除缓存条目?什么是正确的密钥?
答案 0 :(得分:0)
通过Angular源调试后,事实证明密钥已转义,因此在示例中密钥应为/_users/org.couchdb.user%3Agareth
。
我更新了代码以使用encodeURIComponent,例如:
$http.put('/_users/' + id, changes).success(function() {
$cacheFactory.get('$http').remove('/_users/' + encodeURIComponent(id));
});
有关如何构建密钥的更多信息,请查看$http service source中的buildUrl
函数。