DOM POST 后不再更新

DOM not updating after POST

在我的 Django+angular 应用程序中使用 https://github.com/blacklocus/angular-django-rest-resource 和我的 ng-repeat 在发出 'DELETE' 请求时正确更新,但不使用 'POST'

相关控制器代码:

var Project = djResource('api/projects/:id', {'id': "@id"});
$scope.projects = Project.query();
$scope.newProject = new Project;
$scope.createProject = function(){
  apiSrv.request('POST', 'projects/', $scope.newProject,
   function(data){
    $scope.projects = Project.query();
   },
   function(err){
    $log.error(err);
   }
  );
};
$scope.deleteProject = function(id){
  apiSrv.request('DELETE', 'projects/'+id, {},
   function(data){
    $scope.projects = Project.query();
   },
   function(err){
    $log.error(err);
   }
  );
};

相关服务代码:

.factory('apiSrv', ['$http', function($http){
  var apiSrv = {};

  apiSrv.request = function(method, url, args, successFn, errorFn){
    return $http({
      method: method,
      url: '/api/' + url,
      data: JSON.stringify(args)
    }).success(successFn).error(errorFn);
  };

  return apiSrv;
}]);

我试过在 POST 回调期间调用 $scope.$apply();。也试过$scope.projects.push(project);

我也试过了

$scope.newProject.$save(function(data){
  $scope.projects = Project.query();
});

以及 $save 回调中的 $scope.projects.push(project);$scope.$apply();,我没有尝试更新 DOM。它在 deleteProject 函数中运行良好,DOM 更新以显示 $scope.projects 的更新状态。添加 $log.info($scope.projects); 会列出所有新添加的项目,但同样,无论我做什么,DOM 都保持不变。有任何想法吗?谢谢。

终于解决了这个问题。我正在使用 Angular Material,我的项目表单位于 material 对话框中,该对话框显然创建了一个隔离范围。我需要将当前范围分配为对话框的 属性,然后通过 属性.

引用模型

例如

$mdDialog.show({
    controller: function(){this.parent = $scope;},
    controllerAs: 'ctrl',
    ...

在我看来使用 ng-model: "ctrl.parent.newProject.project_name" 等等。