数据库值已更新,但在客户端角度Web应用程序中不可见

时间:2017-06-01 13:21:27

标签: angularjs http

我有工作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中看到新对象。但是,数据已成功添加到服务器端的数据库中。

2 个答案:

答案 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';