Angular js - 从ng-grid推送数据

时间:2014-05-07 10:32:06

标签: javascript arrays angularjs ng-grid

我需要一些帮助才能将数据从ng-grid传输到另一个页面。 我正在制作发票,当ng-grid的发票完成后,数据必须转到另一个带有其他布局的页面,随时可以打印。

我使用了一项服务,但显然缺少一些东西。 我以为我正确地将数据推送到数组中。 如果我在空数组中放置一些东西,在另一页中我可以看到它,所以,基本上,我只是没有从ng-grid中推送任何东西。 :(

主控制器,带有ng-grid:

  

控制器(' MainCtrl',[' $ scope',' $ http',功能($ scope,$ http){

  /*empy array, where I would like to push my data*/
  $scope.dataFatt=[]; 
  /*array for the ng-grid*/
  $scope.myData = [{Numero:'1',Descrizione:'a',CostoUnitario:'10',Qta:'1',Totale:''},
                  {Numero:'2',Descrizione:'b',CostoUnitario:'10',Qta:'1',Totale:''},
                  {Numero:'',Descrizione:'',CostoUnitario:'',Qta:'',Totale:''},
                  {Numero:'',Descrizione:'',CostoUnitario:'',Qta:'',Totale:''},
                  {Numero:'',Descrizione:'',CostoUnitario:'',Qta:'',Totale:''}
  ];  
  /*-------------------------GRID-----------------------*/
 $scope.gridOptions = { 
    data: 'myData', 
    selectedItems:$scope.dataFatt,
    enableCellSelection: true,
    enableCellEdit: true,
    enableRowSelection: true,
    columnDefs: [
      {cellTemplate: '<button ng-click="addRow()">+</button>',width: 40, enableCellEdit: false},
      {field: 'Numero', displayName: 'Numero', enableCellEdit: true},
      {field:'Descrizione', displayName:'Descrizione'},
      {field: 'CostoUnitario', displayName: 'Costo Unitario', enableCellEdit: true},
      {field: 'Qta', displayName: 'Qta', enableCellEdit: true},
      {field: 'getTotale()', displayName: 'Totale', enableCellEdit: false},
      {cellTemplate: '<input type="button" value="-" ng-click="removeRow($index)"/>',width: 40, enableCellEdit: false }],

  };

选择项目并将其推入空数组的服务:

controller.factory('DatiFattura', function(){
    return{
        getDati:function(){
            angular.forEach($scope.myData, function(dataFatt, index){
                if (dataFatt.Numero){
                    $scope.gridOption.selectItem(index,true);
                               $scope.data.push(selectItem);
                }
            });
        }
    };
});

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您的流程,因为这不是完整的代码,但您可以将包含selectedItems的变量放入服务并将其直接附加到网格中。然后,您可以将相同的服务注入另一个控制器并访问所选的项数据数组以显示可打印的发票。 See main.js and service.js in this Plnkr.