Я пытаюсь настроить угловую ui-сетку с столбцами x
в зависимости от количества объектов view.trend.getTagsList()
. $scope.addData()
является функцией, вызывающая один раз каждые три секундыПроблемы с настройкой динамических столбцов в угловой-ui-сетке
$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 }
.
Мой вопрос: почему угловая-ui-сетка не переписывает столбцы, как в $scope.redoColumns()
? Я получаю displayNames к «X» и «Y» в хром вместо TimeStamp и независимо от того, что такое view.trend.getTagsList()[i].getTitle()
. Также хочу добавить, что в поле «сортировка по умолчанию» нет: «x».
Попробуйте поставить вызов в $ таймаут: $ таймаут ($ scope.redoColumns, 0); // ведет себя как очередь – Steffomio
@Steffomio не работает. –