Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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
Javascript ng网格中的动态列定义_Javascript_Angularjs_Ng Grid - Fatal编程技术网

Javascript ng网格中的动态列定义

Javascript ng网格中的动态列定义,javascript,angularjs,ng-grid,Javascript,Angularjs,Ng Grid,我想在从数据库返回的值之后动态地分配ng grid列名称,但问题是它在从ajax返回数据之前被初始化,我无法调用gridOption,所以它显示balnk,所以请帮助我如何通过ajax返回值构造列名称 $scope.gridOptions = { data: 'data.Values', columnDefs: [ { field: "ID", displayName:

我想在从数据库返回的值之后动态地分配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;
 }  
谢谢

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

$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;
}]);

演示

感谢Max的帮助,我在帮助columnDef的帮助下完成了此操作,如下所示:

第1步:

$scope.colDef = [];
第二步:

RecordService.getRecords().then(function (data){      
    $scope.colDef=["ColumnName":data.something]    
}
$scope.gridOptions = {   
    data: 'data.UdiValues',  
    columnDefs:'colDef',            
    filterOptions: $scope.filterOptions  
};  
第三步:

RecordService.getRecords().then(function (data){      
    $scope.colDef=["ColumnName":data.something]    
}
$scope.gridOptions = {   
    data: 'data.UdiValues',  
    columnDefs:'colDef',            
    filterOptions: $scope.filterOptions  
};  
差不多


返回json、玩游戏、使用GET映射到字符串等?

我做过类似的事情:-

self.gridOptions.columnDefs = columnDefs(colDef,displayNames);
列定义为:-

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;          
    };
var columnDefs=函数(数据,cd){
var colDef=[];
var mi=null;
var colByOrder=sortedByOrder(数据);
for(var i=0;i
你能发布HTML部分吗?当然可以,这不是你的HTML,而是一行。编辑您的帖子并添加完整的HTML。感谢回复最大值,但同样的问题再次出现..将其设置为列名“默认”。不是新的:(我尝试在plunker中复制它,请发布完整的HTML或在哪里加载GridOptions很棒!说明您可以使用columnDefs字符串,nggrid将绑定到$scope属性。我认为在步骤2中,您应该使用'colDef'而不是'columnDefs',不是吗?