2016-06-30 9 views
1

私は現在、APIコールを介してJSONオブジェクトとして取得される3列のデータを表示するために、プロジェクト用に角度ui-gridを使用しています。角度uiグリッドでセル値を取得

現在、グリッドのデータを表示できます。ユーザーが特定の行をクリックするたびに、別のAPI呼び出しが行われ、最初の列の各セル値がクエリデータとして送信されます。受け取った応答は、モーダルウィンドウ内に表示されます。

ただし、グリッドにclickイベントを配置して、特定の行がクリックされたときに2番目のAPI呼び出しを正しく行うことができないときにセル値を取得することはできません。

divの典型的なng-clickは、セルの値をキャプチャしないので、目的を果たさないでしょう。

誰かがこの機能をどのように達成することができますか?

注:セルは編集できません。それらは読み取り専用です。

HTML

<div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-exporter class="grid"></div> 

JS

testFactory.getAPIData() 
      .then(function(response){ 
       $scope.gridOptions.data = response.data; 
      }), function(error){ 
       console.log("Factory error"); 
      } 

     $scope.gridOptions = { 
      enableRowSelection: true, 
      enableRowHeaderSelection: false 
     }; 
     $scope.gridOptions.enableHorizontalScrollbar = 0;    

     $scope.gridOptions.columnDefs = [ 
       { field: 'id', name: 'ID', enableHiding: false }, 
       { field: 'name', name: 'NAME', enableHiding: false }, 
       { field: 'age', name: 'AGE', enableHiding: false } 
     ]; 

     $scope.gridOptions.onRegisterApi = function (gridApi) { 
      $scope.myGridApi = gridApi; 
     }; 

答えて

1

あなたはangular.element().data()を使用してグリッド要素の$の範囲をつかむことができます。行コンテナの$ scopeには行プロパティがあり、行エンティティが含まれています。

ここでは、マウスアップをグリッドにバインドし、行プロパティが見つかるまで$ scope。$ parentをループする例を示します。その後、その行プロパティを使用してAPI呼び出しを行い、レスポンスで必要な処理を行います。

http://plnkr.co/edit/P52jJkPRuzmFUWq3Fheb?p=preview

+0

こんにちはXann009のようなご回答に感謝を機能を追加します。私は、私が達成したいと思っていたものと一致していた何かをプランカーで見つけました。私はそれがうまく動作するかどうかを私のプロジェクトに実装しようとします。 http://plnkr.co/edit/OFoJydRpzoKAGBw3Tfzw?p=preview –

1

これは何ですか?

var rowCol = $scope.gridApi.cellNav.getFocusedCell(); 
    if(rowCol !== null) { 
     $scope.currentFocused = 'Row Id:' + rowCol.row.entity.id + ' col:' + rowCol.col.colDef.name; 
    } 

Example from Plunker

はい、あなたはより多くの詳細については、以下のWebサイトにアクセスすることができた場合: Details

が、これはあなたのお役に立てば幸いです。がんばろう ! ! !あなたはgridOptions.onRegisterApi内

gridBodyElem.addEventListener('mouseup', handleGridClick); 

をイベントを登録することができ

1

まずそしてちょうど、この

function handleGridClick(evt) { 
      var targetElem = angular.element(evt.target); 
      var elemData = targetElem.data().$scope; 
} 
関連する問題