我们有一个Ionic app来轮询节点/表达式API。
当应用程序启动时,它会从API正确获取JSON数据。当我们更新数据并从Ionic应用程序再次获取数据时,我们仍然可以看到应用程序启动时的旧数据。
我们试图以各种方式清除Angular缓存和Ionic缓存,但这似乎并没有什么不同。
我们尝试过的事情是:
模板上的 $ionicConfigProvider.views.maxCache(0);
,cache-view="false"
,在状态上设置cache: false
,尝试通过$state.go($state.currentState, {}, {reload : true});
,$ionicHistory.clearHistory();
和$ionicHistory.clearHistory();
访问状态,$route.reload
和$window.location.reload
。
控制器:
function contactsController(Contacts, $stateParams) {
var vm = this;
var params = $stateParams.id;
Contacts.getAllContacts.then(function success(response) {
vm.data = response.data;
vm.selectedContact = response.data[params];
});
}
厂
function contactsFactory($http, $stateParams) {
return {
getAllContacts: $http.get('https://api-call'),
update: function(url) {
$http.patch('https://api-call/update', [$stateParams.id, url]);
},
};
}
快递后端
app.get('/', function (req, res) {
ref.once("value", function(snapshot){
res.send(snapshot.val());
});
});
app.patch('/update', function(req, res) {
var id = req.body[0];
ref.child(id).update({"imageURL": req.body[1]});
});
由于
答案 0 :(得分:2)
<ion-view cache-view="false" view-title="My Title!">
答案 1 :(得分:1)
尝试console.log(vm)
并验证是否已获取更新的数据。如果记录了更新的数据,它的唯一视图仍未更新,我将尝试以下cache-view="false"
。
$scope.apply(function (){
// update your view here
vm.data = response.data;
vm.selectedContact = response.data[params];
});
答案 2 :(得分:0)
通过使用Firebase once()
,您已有效删除了除{1}之外的所有附加到value
的回调:
然后侦听指定事件类型的一个事件 停止聆听
请尝试切换到on()
。
app.get('/', function (req, res) {
ref.on("value", function(snapshot){
res.send(snapshot.val());
});
});
可能是您的问题根本与缓存无关......
答案 3 :(得分:0)
当我在Android设备上安装Ionic 2 Open layer map时,我可以在android屏幕上看到Open layers map成功。但当我关闭它并再次打开应用程序时,我无法看到地图。要解决这个问题,我所做的是:我卸载应用程序,重新启动我的设备,然后重新安装应用程序,之后我可以看到地图。 请给我一个永久性的解决方案。
答案 4 :(得分:0)
将此设置放在app config中
$ionicConfigProvider.views.maxCache(0);
配置中的 $ionicConfigProvider
依赖。