Javascript 角度数据表中的缓存

Javascript 角度数据表中的缓存,javascript,angularjs,datatable,Javascript,Angularjs,Datatable,我在一个项目中使用angular datatables(v0.5.1),我检测到一种奇怪的“缓存”行为 datatable的数据是从API获取的。有一个承诺,当收到数据时,承诺得到解决,数据显示在表格上 但是,如果我要求第二组数据(不同的,有其他日期范围或过滤器),当收到数据时,数据是用第一次获得的信息绘制的,而不是新的信息 编辑:抱歉-添加一些代码:) 这是控制器的一部分,用于加载数据并将其发送到指令: 函数通道控制器(…){ var vm=这个; vm.showLoadingMetrics

我在一个项目中使用angular datatables(v0.5.1),我检测到一种奇怪的“缓存”行为

datatable的数据是从API获取的。有一个承诺,当收到数据时,承诺得到解决,数据显示在表格上

但是,如果我要求第二组数据(不同的,有其他日期范围或过滤器),当收到数据时,数据是用第一次获得的信息绘制的,而不是新的信息

编辑:抱歉-添加一些代码:)

这是控制器的一部分,用于加载数据并将其发送到指令:

函数通道控制器(…){
var vm=这个;
vm.showLoadingMetrics=true;
激活();
函数激活(){
setFilters();
loadData();
}
//查询API并将数据加载到表中
函数loadData(){
vm.metricsData=MetricsService.getMetrics(过滤器);
然后(函数(resolvedPromise){
readTableConfiguration(resolvedPromise);
//拆下旋转器
vm.showLoadingMetrics=false;
});
}
//根据承诺构建表配置
函数readTableConfiguration(resolvedPromise){
vm.chartConfig.metrics=resolvedPromise.data.definitions.columns;
}

}
回答我自己,问题与任何缓存无关,问题在于我曾经承诺从API获取数据

由于承诺只能解决一次,只有第一次解决时才能正常工作,第一次解决后的每个解决方案都会失败,因为它已经解决,并且数据是相同的

解决方案是在每次加载尝试中使用新的承诺

希望这有帮助

编辑:添加一些修复我的问题的代码:

函数getMetrics(过滤器){ 返回$q(函数(解析、拒绝){ var params={}; if(filters.dateRange&&filters.dateRange.start&&filters.dateRange.end){ //设置日期过滤器 params.start_date=时刻(filters.dateRange.start.unix(); params.end_date=时刻(filters.dateRange.end).unix(); }否则{ //设置默认日期筛选器 params.start_date=moment(); params.end_date=moment().unix(); } if(filters.groupBy&&typeof filters.groupBy=='string'){ params.group_by=filters.groupBy; }否则{ params.group_by=默认_FILTERS.groupBy; } if(filters.channel&&filters.channel.slug){ params.channel=filters.channel.slug; } if(filters.campaign&&filters.campaign.id){ params.campaign=filters.campaign.id; } //调用api服务 解析(ApiService.getMetrics(params)); });
}大家好,欢迎来到StackOverflow。为了获得最佳响应,您能否共享您的代码以便我们查看?您是否使用$q.defer()作为承诺?您的解析代码在哪里?是的,我使用$q.defer()来表示承诺,我刚刚添加了一些代码来演示如何使用它来解决问题。