我想在从数据库返回的值之后动态地分配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;
}
由于
答案 0 :(得分:9)
感谢Max的帮助,我使用了如下的帮助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
};
答案 1 :(得分:1)
尝试设置第一个“默认”值并在更改后使用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;
}]);
演示 Fiddle
答案 2 :(得分:0)
像 this
这样的东西返回json,玩转,使用GET映射到字符串等?
答案 3 :(得分: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;
};