view.trend.getTagsList()
が返すオブジェクトの数に応じて、x
カラムのアングルグリッドグリッドを設定しようとしています。 $scope.addData()
は今、テストとして、私は唯一の{ x: Date, y: value }
のリストが含まれているデータ.getData()
のリストを持つ単一のオブジェクトview.trend.getTagsList()[0]
をフェッチしようと3秒ごとアングルグリッドでダイナミックカラムを設定する際の問題
$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
};
を呼び出す機能です。
私の質問は、なぜ角度-ui-グリッドは$scope.redoColumns()
のように列を書き換えないのですか? TimeStampの代わりにchromeのdisplayNamesを 'X'と 'Y'に設定します。view.trend.getTagsList()[i].getTitle()
は何でもあります。また、フィールドに「デフォルト」ソートがないことを追加したいとします: 'x'どちらか。
機能
redoColumn
でみてくださいを削除することによってそれを解決:$タイムアウトを($ scope.redoColumns、0); //キューのように動作します – Steffomio@Steffomioは動作しませんでした。 –