Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $scope变量未在$http.success内更新_Angularjs_Ng Grid - Fatal编程技术网

Angularjs $scope变量未在$http.success内更新

Angularjs $scope变量未在$http.success内更新,angularjs,ng-grid,Angularjs,Ng Grid,我从$scope.targetHeaderList获取动态标题,我试图动态分配列名和数据,以便在ng网格中显示列名,但$scope.columns.push在success中不起作用。但是我得到了我在success之外初始化的列的ng网格 app.controller('customersCtrl',function($scope, $http) { $scope.loading = true; $scope.columns=[ { field:'part', displayNa

我从$scope.targetHeaderList获取动态标题,我试图动态分配列名和数据,以便在ng网格中显示列名,但$scope.columns.push在success中不起作用。但是我得到了我在success之外初始化的列的ng网格

app.controller('customersCtrl',function($scope, $http) {
  $scope.loading = true;
  $scope.columns=[
    { field:'part', displayName:'Part '},
    { field:'description', displayName:'Description', pinnedLeft:true },
    { field:'cus', displayName:'CC', }
  ];

  $scope.columns.push({field:field,displayName:display});

  $scope.add = function (headerCollection) {
    for(var i=0, j=0;i < headerCollection.length; i++) {
      if (i%2 == 0) {
        fieldString = "cgDetailsList["+Math.floor(j)+"].cgHTS";
      } else {
        fieldString = "cgDetailsList["+Math.floor(j)+"].dutyRate";
      } 
      var displayString = $scope.headerCollection[i].toString();
      var obj = new tempObject(fieldString, displayString);
      console.log(fieldString +"  "+ displayString);
      $scope.columns.push(obj);
      j = j + 0.5;
    };

    $scope.columns.push({field:'createdBy',displayName:'Created By'});  
    $scope.columns.push({field:'requestor',displayName:'Requested'});
    $scope.columns.push({field:'trainedFlag',displayName:'Trained'});
    $scope.columns.push({field:'recCommited',displayName:'Records Committed'});

    $scope.$watch('columns', function(){});
};

$scope.data = '';
$http.get("autoAuditTargetData.do?parameter=targetData")
  .success(function(response) {
    $scope.rowTargetDataList = response.targetDataList;
    $scope.data = response.targetDataList;
    console.log($scope.data);
    $scope.headerCollection = response.targetHeaderList;
    console.log($scope.headerCollection);
    $scope.add($scope.headerCollection);                
    $scope.targetDataCount = response.targetDataCount;
    $scope.itemsPerPage = response.targetDataCount;
    $scope.targetHeaderStatic = response.targetHeaderStatic;
    $scope.targetHeaderDynamic = response.targetHeaderDynamic;
    $scope.queryID = response.queryID;
    $scope.auditCommitFlag = response.auditCommitFlag;

    if ($scope.auditCommitFlag != null) {
      if ($scope.auditCommitFlag != 'YES') {
        //document
        document.getElementById("commitAudit").disabled = true;
        document.getElementById("commitAudit").className = "buttondis";
      } else {
        //document
        //alert( " false ");
        document.getElementById("commitAudit").disabled = false;
        document.getElementById("commitAudit").className = "buttonpos";
      }
    }
    $scope.loading = false;
});

//$scope.columns.push({field:'cgDetailsList[0].cgHTS',displayName:'BR HTS'});   

console.log($scope.columns);

$scope.gridOptionsTarget = {
  enableSorting: true,
  columnDefs: $scope.columns,
  enablePinning: true,
  enableSorting: true,
  enableCellSelection: false,
  enableRowSelection: false,
  enableColumnResize : true,                                        
  data:'data'
};
console.log($scope.columns);

$http.get调用似乎不在控制器中。另外,请记住,它是一个异步任务,因此脚本不会等待它完成它的工作。@Avalanche它在控制器中,我尝试直接更新$scope.gridOptionsTarget.columnDefs。我看到对象正在加载到其中,但是ng网格没有更新首先您有$scope.data=;就在$http.get调用之前,在调用内部,您认为您从响应中为该变量分配了一些值。但您不是,因为它是一个异步调用,您的脚本执行将继续,而无需等待ajax返回任何内容。您需要在回调函数中继续执行代码,或者尝试使用。另外,请记住,在最新版本中,$http对成功的支持被删除,并替换为then