我正在为我的一个项目使用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?
};