Angularjs $scope变量未在$http.success内更新
我从$scope.targetHeaderList获取动态标题,我试图动态分配列名和数据,以便在ng网格中显示列名,但$scope.columns.push在success中不起作用。但是我得到了我在success之外初始化的列的ng网格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
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