从工厂获取阵列更新(Angular js)

时间:2017-01-21 09:05:26

标签: angularjs arrays controller factory

我在工厂声明了一个名为" voci" 的数组, 然后我有一个控制器用一个函数" CalcolaTotaleEuroPagine" 更新数组,我想要的是访问数组" voci" 更新并在视图中打印,但它不起作用。 我在这做了什么:

JS

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

//SERVICE THAT RETURN ARRAY
LandingApp.factory('PreventivoTotaleFront', function () {
   var voci = {};
   voci.lista = [];

   return {
      add: function (voce) {
         voci.lista.push({
            id: voci.lista.length,
            costo: voce
         });
        console.log(voci);
     }
   };
   return voci;
});


//CONTROLLER THAT UPDATE ARRAY
LandingApp.controller('numberpages',function($scope,PreventivoTotaleFront){

   $scope.primapagina = 150;
   $scope.altrepagine = 90;
   $scope.numeroaltrepagine = 0;
   $scope.TotaleEuroPagine = 0;

   $scope.CalcolaTotaleEuroPagine = function(){
       return $scope.TotaleEuroPagine = $scope.altrepagine * $scope.numeroaltrepagine + $scope.primapagina;
       PreventivoTotaleFront.add(TotaleEuroPagine);
   };

}); 

HTML

<body ng-app="LandingApp">
    <div class="container">

        <form ng-controller="numberpages">

            <label>N° Pagine interne: </label><input type="number" min="0" ng-model="numeroaltrepagine" ng-change="CalcolaTotaleEuroPagine()"></input>
            <br/>{{TotaleEuroPagine | currency:""}}€<br/>

             <!--PRINT THE ARRAY VOCI-->
            <div>{{voci}}</div>
        </form>

    </div>
</body>

1 个答案:

答案 0 :(得分:0)

声明错误

$scope.CalcolaTotaleEuroPagine = function(){
return $scope.TotaleEuroPagine = $scope.altrepagine * $scope.numeroaltrepagine + $scope.primapagina;
PreventivoTotaleFront.add(TotaleEuroPagine);
};

您在致电工厂之前从该功能返回。因此工厂不更新阵列。 在返回语句之前将此行放入PreventivoTotaleFront.add(TotaleEuroPagine);