我有工作angularjs和HTML Web应用程序。我面临的问题是它不会更新服务器中更改的数据。但是,如果我使用调试器运行它,它可以正常工作并按预期更新数据。
例如:脚本文件
$http.get('http://localhost:8080/api/database')
.then(function(objectList){
$scope.objectList = objectList.data;
});
html文件
<tr ng-repeat="object in objectList">
现在当我使用location.path()
和routeProvider
将新对象添加到objectList后再次访问页面时,我无法在列表中看到新添加的项目,而如果我执行相同的活动浏览器的调试器打开然后我可以在List
中看到新对象。但是,数据已成功添加到服务器端的数据库中。
答案 0 :(得分:0)
最佳做法是为所有API请求提供someService.js文件,您可以在控制器中使用该服务。此外,您可以将范围变量全局设置为空数组,然后在解析promise之后,您可以将success.data推送到范围变量中,它应该像魅力一样工作。
这应该在您的控制器中:
$scope.objectList = [];
var databasePromise = someservice.getDatabase();
databasePromise.then(function(success) {
$scope.objectList = success.data;
}, function(failure) {
console.log(failure);
});
如果你很难修理它,请分享一个plunker。
答案 1 :(得分:0)
解决上述问题的解决方案。
//initialize get if not there
if (!$httpProvider.defaults.headers.get) {
$httpProvider.defaults.headers.get = {};
}
// Answer edited to include suggestions from comments
// because previous version of code introduced browser-related errors
//disable IE ajax request caching
$httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';
// extra
$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
$httpProvider.defaults.headers.get['Pragma'] = 'no-cache';