0

私は Angular を初めて使用し、Javascript の経験はあまり豊富ではありません。次のコードを使用して ngGrid にデータを表示できません。何が問題ですか?

本質的に。Web サービスからデータをロードし、その上で変換 (ピボット) を実行してから、それをグリッドに表示したいと考えています。

以下をご覧ください

app.js -> poingを開始

var konstruktApp= angular.module('konstruktApp',['ngGrid']);  

dataService.js -> Web サービス呼び出し

'use strict';
konstruktApp.service('DataService',function DataService($http){
   var callHttp = function(){
     delete $http.defaults.headers.common['X-Requested-With'];
       return $http.get("http://83.250.197.214/konstrukt.service/Konstrukt.SL.DummyBudgetService.svc/GetDummyBudgetData/");
   };
    return {
        getDummyData: callHttp
    };
});

ngGridController.js -> ロジックが存在する場所...

$scope.getData = DataService.getDummyData;
$scope.gridOptions = {data:'result'};
var getData = function() {
    $scope.getData().then(function (response) {
        var res = pivotData(response.data);
        $scope.result = res.data.PivotedRows;

        $scope.columns = res.cols;

        console.log('from the success handler at ' + new Date());
    }, function (reason) {
        console.log('failed: ');
        console.log(reason);
    });

};

..そして、ここにデータを「ピボット」するロジックがあります

var pivotData = function(data) {
  var firstColumn = "Dim1";
  var secondColumn = "Period";

  var columns = [];
  columns.push({
    field: firstColumn,
    enableCellEdit: false
  });


  var pivotedArray = {};

  pivotedArray.PivotedRows = [];
  var rowItems = [];
  var rowArray = {};

  var previusFirstColumnValue = -1;
  var firstColumnValue = 1;

  //for each row
  for (var i = 0; i < data.Rows.length; i = i + 1) {
    //firstColumnValue = $scope.dataCollection.Rows[i].FindCell.Cells[firstColumn].Value;
    firstColumnValue = findCell(data.Rows[i].Cells, firstColumn).Value;

    //var secondColumnValue = data.Rows[i].Cells[secondColumn].Value;
    var secondColumnValue = findCell(data.Rows[i].Cells, secondColumn).Value;
    //if first column value has changed, add new row
    if (firstColumnValue != previusFirstColumnValue) {

      if (i !== 0) {
        for (var j = 0; j < rowItems.length; j = j + 1) {
          rowArray[rowItems[j].name] = rowItems[j].value;
        }
        pivotedArray.PivotedRows.push( rowArray);
        rowArray = {};
        rowItems = [];
      }

      rowItems.push({
        name: firstColumn,
        //value: $scope.dataCollection.Rows[i].Cells[firstColumn].Value
        value: findCell(data.Rows[i].Cells, firstColumn).Value
      });
    }

    //if (columns.indexOf({field: secondColumnValue}) == -1) {
    if (i < 12) {
      columns.push({
        field: secondColumnValue,
        editableCellTemplate: "<input ng-class=\"'colt' + col.index\" ng-input=\"COL_FIELD\" ng-blur=\"lostFocus()\" ng-model=\"COL_FIELD\" ng-change=\"dataChanged(col,row,row.entity)\"/>",
        enableCellEdit: true
      });
    }

    rowItems.push({
      name: secondColumnValue,
      value: findCell(data.Rows[i].Cells, secondColumn).Value
    });
    previusFirstColumnValue = firstColumnValue;
  }


  for (var k = 0; k < rowItems.length; k = k + 1) {
    rowArray[rowItems[k].name] = rowItems[k].value;
  }

 // $scope.columns = columns;

  pivotedArray.PivotedRows.push( rowArray);

  return {data: pivotedArray, cols: columns};
};

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

編集: データ相関行 <-> 列は正しいです。pivotedArray.PivotedRows 配列のデータに問題があると思われます。

4

1 に答える 1

0

コードを新しいplnkrに移動すると、違いが生じることが判明しました。今、それは私が取り戻したい私の人生の数時間です:)

于 2014-08-05T08:00:44.990 に答える