0

angular-filter countBy関数を使用して、列のエントリ数をグループ化してカウントします。私はこの値を同じページの別の棒グラフに渡したいと思います。私はいくつかの方法を試しましたが、それをうまく動作させることはできませんでした。AngularJS:ng-repeatからbarchartへのパス値

HTML: 
<!doctype html> 
<html ng-app="app"> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-touch.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-animate.js"></script> 
    <!-- <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-resource.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-route.js"></script> --> 
    <script src="http://ui-grid.info/docs/grunt-scripts/csv.js"></script> 
    <script src="http://ui-grid.info/docs/grunt-scripts/pdfmake.js"></script> 
    <script src="http://ui-grid.info/docs/grunt-scripts/vfs_fonts.js"></script> 
    <script src="http://ui-grid.info/release/ui-grid.js"></script> 
    <script src="http://ui-grid.info/release/ui-grid.css"></script> 
    <script src="node_modules/angular-chart.js/node_modules/chart.js/dist/Chart.min.js"></script> 
    <script src="node_modules/angular-chart.js/dist/angular-chart.min.js"></script> 
    <script src="node_modules/angular-filter/dist/angular-filter.min.js"></script> 
    <!-- <script src="/js/app.js"></script> 
    <link rel="stylesheet" href="http://ui-grid.info/release/ui-grid.css" type="text/css"> 
    <link rel="stylesheet" href="/css/main.css" type="text/css"> 
    <!-- <link rel="stylesheet" href="/webjars/bootstrap/3.3.6/css/bootstrap.css"> --> 
</head> 
    <body> 
<div ng-controller="myController"> 
     <div id="grid1" ui-grid="{ data: myData }" class="grid"></div> 
     <div><canvas id="bar" class="chart chart-bar"chart-data="key" chart-labels="value" chart-series="series"></canvas></div> 
     <div><li ng-repeat="(key, value) in myData | countBy: 'col_ky'" >Column Key: {{ key }}, Number of Hits: {{ value }}</li></div> 
    </div> 
</body> 
</html> 

コントローラー:

var app = angular.module('app',['ngTouch', 'ui.grid', 'chart.js', 'angular.filter']); 
app.controller('myController',['$scope', '$http','$filter',function($scope, $http, $filter) { 

$scope.barData = []; 
$scope.labels = []; 
$scope.myData = [{"col_ky":"75421","crt_ts":1501365031000},{"col_ky":"75421","crt_ts":1501124681000},{"col_ky":"75421","crt_ts":1501124688000},{"col_ky":"880610","crt_ts":1501127589000},{"col_ky":"880610","crt_ts":1501127715000},{"col_ky":"891733","crt_ts":1501128075000},{"col_ky":"75421","crt_ts":1501128130000},{"col_ky":"880610","crt_ts":1501128181000},{"col_ky":"75421","crt_ts":1501128192000},{"col_ky":"885110","crt_ts":1501128364000},{"col_ky":"880610","crt_ts":1501128369000},{"col_ky":"326083","crt_ts":1501130957000},{"col_ky":"75421","crt_ts":1501131142000},{"col_ky":"863184","crt_ts":1501131949000}]; 


}]); 

私は多分barDataラベルコントローラで VARSにリピートngのからキーを渡すことができれば、私はそれからできましたbarDataとラベルを使用して棒グラフに値を設定します。だから私はこれをどのようにすることができますか?

+0

あなたには、いくつかのイベントを作りたいのですか?問題ははっきりしない。 myData変数のデータを使用して棒グラフを表示することができます –

+0

こんにちは@NarenMurali。列が棒グラフに表示された回数のカウントを入れたいとします。 col_key 75421ヒット6。私はmyDataから生データを入れたくありません。 – OneXer

+0

あなたのコード[ui-grid click event](https://stackoverflow.com/questions/40801982/angular-ui-grid-click-event-on-selected-row)を確認しました。このリンクはUIグリッドと統合することができます必要な値を作成して取得した後、イベント内でforループを作成してmyDataをループし、選択したデータを持つ行のみを数えます。お役に立てれば。 –

答えて

1

私はついにjsfiddleのコードを正常に動作させました。このコードは、カスタムフィルタ関数を呼び出す方法を示しています。私はこれがあなたが探しているものであることを願っています。もう一つのこと。カスタムフィルタを行うラインはように

$scope.barData = $filter('countBy')($scope.myData, "col_ky"); 

ですJsfiddle:https://jsfiddle.net/Kai_Draord/p3exg6rw/9/

最終出力: enter image description here

関連する問題