我正在尝试使用x
列设置一个angular-ui-grid,具体取决于view.trend.getTagsList()
返回的对象数。 $scope.addData()
是一个每三秒调用一次的函数
$scope.columns = [];
$scope.setGridColumnWidth = function () {
return (100 / view.trend.getTagsList().length + 1) + '%';
}
$scope.redoColumns = function () {
$scope.columns = [];
$scope.columns.push({
displayName: 'TimeStamp', field: 'x', width: $scope.setGridColumnWidth(), sort: {
direction: uiGridConstants.DESC,
priority: 1
}
});
for (var i = 0; i < view.trend.getTagsList().length; i++)
$scope.columns.push({ displayName: view.trend.getTagsList()[i].getTitle(), field: 'y' + view.trend.getTagsList()[i].getId(), width: $scope.setGridColumnWidth() });
}
$scope.addData = function () {
if (view.trend.getTagsList().length > $scope.columns.length) {
$scope.redoColumns();
}
$scope.tslab_grid.data = view.trend.getTagsList()[0].getData();
};
$scope.tslab_grid = {
enableGridMenu: true,
enableColumnResizing: true,
enableRowSelection: true,
multiSelect: false,
enableRowHeaderSelection: false,
paginationPageSizes: 18,
paginationPageSize: 18,
enableVerticalScrollbar: 0,
enableHorizontalScrollbar: 2,
columnDefs: $scope.columns,
data: null
};
现在作为测试我只尝试使用包含view.trend.getTagsList()[0]
列表的数据列表.getData()
来获取单个对象{ x: Date, y: value }
。
我的问题是为什么angular-ui-grid不像$scope.redoColumns()
那样重写列?我将displayNames设置为chrome中的'X'和'Y',而不是TimeStamp和view.trend.getTagsList()[i].getTitle()
。还想添加字段上没有'默认'排序:'x'也是。
答案 0 :(得分:0)
试试这个:
$scope.redoColumns = function () {
var c = [];
c.push({
displayName: 'TimeStamp', field: 'x', width: $scope.setGridColumndWidth(), sort: {
direction: uiGridConstants.DESC,
priority: 1
}
});
for (var i = 0; i < view.trend.getTagsList().length; i++)
c.push({ displayName: view.trend.getTagsList()[i].getTitle(), field: 'y' + view.trend.getTagsList()[i].getId(), width: $scope.setGridColumnWidth() });
$timeout(function(){
$scope.columns = c;
}, 0);
}
答案 1 :(得分:0)
我只是删除$scope.columns = [];
函数中的redoColumn