3

我想在从数据库返回的值之后动态分配 ng-grid 列名称,但问题是它在从 ajax 返回数据之前被初始化,并且我无法调用 gridOption 所以它显示 balnk,所以请帮助我我们怎么能通过ajax返回值构造列名。

$scope.gridOptions =
        {
            data: 'data.Values',
            columnDefs:
            [
                    { field: "ID", displayName: "Record Id" },
                    { field: "Value", displayName: $scope.ColumnName, cellFilter: cellfilterType },                       
        ],

        };

$scope.ColumnName来自下线的地方...

 RecordService.getRecords().then(function (data) {  
  $scope.ColumnName=  data.something;
 }  

谢谢

4

4 回答 4

9

感谢 Max 的帮助,我在帮助 columnDef 的帮助下完成了这项工作,如下所示:

第1步:

$scope.colDef = [];

第2步:

RecordService.getRecords().then(function (data){      
    $scope.colDef=["ColumnName":data.something]    
}

第 3 步:

$scope.gridOptions = {   
    data: 'data.UdiValues',  
    columnDefs:'colDef',            
    filterOptions: $scope.filterOptions  
};  
于 2013-10-29T07:16:36.810 回答
1

尝试设置第一个“默认”值,然后用承诺更改它

$scope.gridOptions =
        {
            data: 'data.Values',
            columnDefs:
            [
                    {  
                     field: "ID",
                     displayName: "Record Id"
                    },
                    { field: "Value",
                      displayName: "default",
                      cellFilter: cellfilterType
                    },                       
        ]    
        };

现在:

RecordService.getRecords().then(function (data) {  
  $scope.gridOptions.columnDefs[1].displayName =  data.something;
 } 

服务RecordService返回承诺,因此我们创建承诺工厂,如:

.factory('RecordService', ['$resource','$q',  function($resource, $q) {
    var data =   {  something: "from service" } ; 

       var factory = {
            getRecords: function (selectedSubject) {
                var deferred = $q.defer();            
               deferred.resolve(data);
                return deferred.promise;
            }
        }
        return factory;
}]);

演示Fiddle

于 2013-10-28T09:09:40.010 回答
0

这样的东西

返回 json,玩转,使用 GET 映射到字符串等?

于 2015-05-12T11:47:08.953 回答
0

我做过这样的事情:-

self.gridOptions.columnDefs = columnDefs(colDef,displayNames);

columnDef 是:-

var columnDefs = function(data,cd){
        var colDef= [];
        var mi = null;
        var colByOrder = sortedByOrder(data); 
        for(var i=0 ; i < colByOrder.length ; i++){
            colDef.push({
                width: width,
                field: String(colByOrder[i][1].position),
                menuItems: menuItems(this),
                displayName: cd[colByOrder[i][1].position],
                enableSorting: false,
                type: 'string',

            });
        }
        return colDef;          
    };
于 2016-06-01T09:21:44.503 回答