通过 post 提交时 $scope 变为空

$scope becomes empty when submitting via post

我正在尝试使用 post 提交 $scope.data。 $scope.data 传递给变量时变为空。

var token     = angular.element(document.querySelector('meta[name="csrf-token"]')).attr('content');
    console.log("Questions: ");
    console.log($scope.questions);
    var qs = $scope.questions;
    $http({
      url: '/admin/exam/questions/store',
      method: 'POST',
      data: {questions: qs, _token:token}
    });

Plunker

只有一种情况是可能的。当你设置 var qs = $scope.data; $scope.data 为空。然后你得到 link 到空变量。所以第一点是像这样使用post

var qs = $scope.data;
$http({
  url: '/admin/exam/questions/store',
  method: 'POST',
  data: {questions: **$scope.data**, _token:token}
});

第二点是调试 :) 但我认为我的第一种方法会有所帮助

问题在于您为 $scope.q 选择的起始数据类型。它被初始化为一个数组,如 $scope.q = [];。然后,您将向该数组添加属性,例如在您的问题输入控件中使用此模型绑定:ng-model="q.question"。但是当 $scope.q 序列化为 JSON 时,那些额外的属性将被忽略。

不是将 q 初始化为数组,而是将其初始化为对象,例如:$scope.q = {}.

您可以通过在视图中添加以下表达式来诊断 q 对象的 JSON 表示:{{q | json}}.