динамический 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;
}
Спасибо
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