динамический columnDef в ng-Grid



Я хочу назначить ng-grid columns name динамически после значения, возвращаемого из базы данных, но проблема в том, что он инициализируется до возврата данных из 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;
}


Спасибо

552   4  

4 ответов:

Спасибо Макс за вашу помощь, я сделал это с помощью columnDef, как показано ниже

Шаг 1:

$scope.colDef = [];

Шаг 2:

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

Шаг 3:

$scope.gridOptions = {   
    data: 'data.UdiValues',  
    columnDefs:'colDef',            
    filterOptions: $scope.filterOptions  
};  

Попробуйте сначала установить значение "default", а затем изменить его с помощью promise

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

Демо Скрипка

Что-то вроде это

Вернуться в JSON, поиграть, использовать сделать отображение строк и т. д.?

Я сделал что-то вроде этого: -

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;          
    };

Comments

    Ничего не найдено.