我想创建一个动态 ng-grid ,它根据 JSON 对象中的键值调整其列。 JSON 对象是从 api 获取的。我面临的问题是在运行时定义列,即这些列在设计时不可用,但仅在运行时可用。我想要这样的东西:
http://plnkr.co/edit/q1Ye10OsIn9NOJmrICyD?p=preview
因此,我的 Json 对象中的列数与键数一样多。 API 可能会有所不同,因此我需要制作一个可以调整其列的网格。
我的插件不起作用,但我希望它能让你知道我正在尝试做什么。
最佳答案
除非我误解了您想要的内容,否则您不需要搞乱columnDefines
。只要有这个:
faculty.controller('facultycontroller', function facultycontroller($scope, $http, $window){
$scope.facdata = [];
$scope.gridOptions = {
data: 'facdata'
};
$http.get("http://mtapi.azurewebsites.net/api/institute").then(function (result) {
$scope.facdata = result.data;
console.log($scope.facdata[0]);
});
});
将为 json 中的每个键创建一个包含一列的网格。
更新
如果您想过滤掉任何以“$”开头的列,您可以执行以下操作:
angular.forEach(result.data[0], function(value, key){
if(key.indexOf('$') != 0)
$scope.columnDefines.push({ field: key, displayName: key});
});
事实上,你已经很接近你想要做的事情了。您只需将columnDefines变量放在$scope上,并使用字符串将其分配给gridOptions,如下所示:
$scope.columnDefines = [];
$scope.gridOptions = {
data: 'facdata',
columnDefs: 'columnDefines'
};
关于json - AngularJS 中带有 JSON 数据的动态 ng-Grid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23969087/