每次加载视图时强制运行$ http.get - Angular

时间:2015-10-31 18:33:36

标签: angularjs

我的应用程序中有一个视图,它可以显示数据库,以显示他们之前上传的用户图像。

问题是另一个视图允许他们上传新图片,但当切换回上传图片的视图时,他们必须进行整页刷新才能看到新上传的内容。< / p>

问题是每次加载视图时如何强制$http.get运行?

这就是我正在尝试的但却没有做我认为应该做的事情:

capApp.controller('myUploadedPhotos', function ($scope, $http) {
    $scope.nameFilter = "";
    $http.get("/ajax/myUploadedPhotos.php", { cache: false})
      .success(function(response) {
        $scope.photos = response;
      });
  });

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:3)

您的代码看起来正确,因此可能会从服务器缓存请求?您可以尝试将随机字符串附加到您的网址以中断缓存。 e.g。

"/ajax/myUploadedPhotos.php" + new Date().getTime()

在考虑之后,我认为你也可以删除{ cache: false},因为如果时间戳发生变化,Angular也无法缓存请求。旧的请求只会坐在某处占据记忆的地方。

答案 1 :(得分:-1)

我不太明白你的问题,但下次初始化行为没有任何问题:

(function(angular) {
    var capApp = angular.module('yourModule', []);

    capApp.controller('myUploadedPhotos', ['$scope', '$http',
        function ($scope, $http) {
            $scope.nameFilter = "";

            $scope.actions = angular.extend($scope.actions || {}, {
                init: function () {
                    return $http.get("/ajax/myUploadedPhotos.php", {cache: false}).then(
                        function (response) {
                            $scope.photos = response;
                        }, function (reason) {
                            console.log('Error occured: ' + reason);
                        });
                }
            });

            // You could even use it in $watch
            $scope.actions.init();
        }
    ]);
})(angular);