如何在通过AngularJS重定向到文章时重新加载文章内容

How to reload content of an article when redirected to it through AngularJS?

本文关键字:文章 新加载 加载 AngularJS 重定向      更新时间:2023-12-17

我正在为我的一个项目使用Django和AngularJS,当我更新一篇文章时,我已经将其设置为重定向到this文章(即表单提交)。问题是,即使后端的一切都更新得很好,但前端的情况却不一样。如果我在浏览器上点击f5(刷新),我会得到新信息,如果没有,内容仍然保持不变。

更新控制器

var EditCtrl = function($scope, $stateParams, $http, Revision, $location) {
    $http.get('http://api.local/api/v1/articlerevision/' + $stateParams.id).success(function(data) {
        $scope.revision = data;
    });

    $scope.update = function() {
        Revision.update($scope.revision);
        $location.path('/wiki/revision/'+$stateParams.id);
    };
};

视图控制器

var ViewCtrl = function($scope, $stateParams, $http) {
    $http.get('http://api.local/api/v1/articlerevision/' + $stateParams.id).success(function(data) {
        $scope.revision = data;
    });
    $scope.toggle = false;
    $scope.comments = false;
};

是否有某种刷新命令可以放在视图控制器中?

看起来像是一个同步化问题:重定向到修订视图时,更新尚未完成。

尝试更改为类似的内容:

var EditCtrl = function($scope, $stateParams, $http, Revision, $location) {
    $http.get('http://api.local/api/v1/articlerevision/' + $stateParams.id).success(function(data) {
        $scope.revision = data;
    });

    $scope.update = function() {
        Revision.update($scope.revision, /* success */ function(data) {
            $location.path('/wiki/revision/'+$stateParams.id);
        });
    };
};

这似乎是由于调用的异步性质造成的问题。您的编辑控制器似乎正在进行2次异步调用

$http.get('http://api.local/api/v1/articlerevision/' + $stateParams.id).success(function(data) {
    $scope.revision = data;
});   //This call is async

$scope.update = function() {
    Revision.update($scope.revision);  //Is this async?
    $location.path('/wiki/revision/'+$stateParams.id);  //Does this navigation happen before update is complete?
};