javascript ng-Grid 中的动态 columnDef
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19630273/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
dynamic columnDef in ng-Grid
提问by freedom
I want to assign ng-grid columns name dynamically after value returned from database, but issue is that it get initialized before data return from ajax, and i am not able to recall gridOption so it showing balnk, so please help me that how can we construct a column name by ajax return value.
我想在从数据库返回的值之后动态分配 ng-grid 列名,但问题是它在从 ajax 返回数据之前被初始化,我无法回忆 gridOption 所以它显示 balnk,所以请帮助我我们怎么能通过ajax返回值构造一个列名。
$scope.gridOptions =
{
data: 'data.Values',
columnDefs:
[
{ field: "ID", displayName: "Record Id" },
{ field: "Value", displayName: $scope.ColumnName, cellFilter: cellfilterType },
],
};
where $scope.ColumnName
coming from below line...
其中,$scope.ColumnName
从下面一行来了...
RecordService.getRecords().then(function (data) {
$scope.ColumnName= data.something;
}
Thanks
谢谢
回答by freedom
Thanks Max for your help, I have done this with of help columnDef as below:
感谢 Max 的帮助,我在帮助 columnDef 的帮助下完成了此操作,如下所示:
Step 1:
步骤1:
$scope.colDef = [];
Step 2:
第2步:
RecordService.getRecords().then(function (data){
$scope.colDef=["ColumnName":data.something]
}
Step 3:
第 3 步:
$scope.gridOptions = {
data: 'data.UdiValues',
columnDefs:'colDef',
filterOptions: $scope.filterOptions
};
回答by Maxim Shoustin
Try to set first "default" value and after change it with promise
尝试设置第一个“默认”值,然后用承诺更改它
$scope.gridOptions =
{
data: 'data.Values',
columnDefs:
[
{
field: "ID",
displayName: "Record Id"
},
{ field: "Value",
displayName: "default",
cellFilter: cellfilterType
},
]
};
And now:
现在:
RecordService.getRecords().then(function (data) {
$scope.gridOptions.columnDefs[1].displayName = data.something;
}
The Service RecordService
returns promise therefore we create promise factory like:
服务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;
}]);
Demo Fiddle
演示 Fiddle
回答by chaity
回答by Eassa Nassar
i have done something like this :-
我做过这样的事情:-
self.gridOptions.columnDefs = columnDefs(colDef,displayNames);
columnDef is :-
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;
};