我在 ng-grid 中的网格列宽有问题。我的问题是我不提前知道列将是什么(它们与值同时从服务调用中检索。我的 Json 对象中有两个属性。列名的字符串数组和然后是值的二维数组。目前列的大小不适合列标题。我知道列会调整大小以适应行数据,但是如果没有返回结果怎么办。那你就一团糟。我试着做它,所以我在获得数据之前不必设置网格选项,但随后出现未定义的错误。我看到另一篇文章,其中解决方案是在 div 标签中使用 ng-if,这样网格在您想要它之前不会加载。这也不起作用,因为网格仍然试图在满足 if 语句之前加载。下面是我的代码。有什么想法吗?另外,我的 ng-if 是这样的:ng-if="contentAvailable"。还添加了屏幕截图。我的期望是显示一个水平滚动条。
app.controller('mainController',function($scope,dataFactory){
$scope.contentAvailable = false;
$scope.gridOptions = {
columnDefs: 'columns',
showGroupPanel: true
};
$scope.url = 'http://example.com';
if (typeof String.prototype.startsWith != 'function') {
String.prototype.startsWith = function (str) {
return this.indexOf(str) == 0;
};
}
$scope.Fetch = function () {
dataFactory.Fetch($scope.url,$scope.config).success(function (blah) {
var result = $scope.transformJsonDataSet(blah);
})
.error(function (error) {
$scope.result = error;
});
};
$scope.transformJsonDataSet = function (ds) {
var tmp = angular.fromJson(ds);
var fieldNames = tmp.FieldNames;
var fieldValues = tmp.FieldValues;
var columns = [];
for (var i = 1; i < fieldNames.length; i++) {
if (fieldNames[i].startsWith('DECODE_') == false) {
columns.push({ field: fieldNames[i], displayName: fieldNames[i], cellClass: 'headerStyle'});
}
}
$scope.columns = columns;
$scope.contentAvailable = true;
return ds;
};
});
app.factory('dataFactory', ['$http', function ($http) {
var dataFactory = {};
dataFactory.Fetch = function (url,config) {
return $http.get(url,config);
};
return dataFactory;
}]);