How to pick up and store an array of data only if Quantity > 0 in Ionic or Angular?

Asked

Viewed 1,391 times

1

I would like when clicking the "Continue Ordering" button to pick up only the items with Quantity > 0, store in an array of new objects.

My View:

<ion-view view-title="Comprar Bebidas Adicionais" hide-nav-bar="false" >     

<ion-content delegate-handle="top" lazy-scroll  id="lista-bebidas" class="has-header lista-bebidass" ng-controller="exBebidasCtrl" >

            <ion-refresher pulling-text="Puxe para atualizar..."  on-refresh="doRefresh()"></ion-refresher>
            <ion-list class="card list">
                <div class="item item-input">
                    <i class="icon ion-search placeholder-icon"></i>
                    <input type="search" ng-model="q" placeholder="Procurar" aria-label="filter bebidasextras" />
                </div>
            </ion-list>

              <div class='card product-card' ng-repeat='bebida in bebidasextras track by $index'>
                    <div class='item item-thumbnail-right product-item'>
<!--                          <img ng-src='{{product.images[0]}}' class='product-image' ion-product-image='product'> -->
                          <h3 class='product-title'><b>{{bebida.ad_bebida_titulo}}</b> - Valor: {{bebida.ad_bebida_valor | currency:"R$"}}</h3>

<!--                          <p class='product-description'>{{product.description}}</p> -->


                         <div class="flex_row">
                              <i class='button icon ion-plus-circled green' mouse-down-up ng-click="add(bebida)"></i>
                                 <span class='product-quantity'>{{bebida.ad_bebida_quantidade}}</span>
                              <i class='button icon ion-minus-circled red' mouse-down-up ng-click="sub(bebida)"></i>
                        </div>      


                              <span class='product-price' ng-if="bebida.ad_bebida_quantidade > 0"><b>Total: {{bebida.ad_bebida_valor * bebida.ad_bebida_quantidade | currency:"R$"}}</b></span>

                              <span class='product-price' ng-if="bebida.ad_bebida_quantidade < 0">Quantidade não aceita. </span>


                    </div>
                  </div>


             <button class="button button-block button-assertive" ng-click="updateBebida()"> <!-- Chama para armazenar num WebSQL -->
                    Continuar o Pedido
             </button>             


  </ion-content>    

My Complete Controller:

 .controller("exBebidasCtrl", function($scope,$rootScope,$state,$ionicScrollDelegate,$http,$httpParamSerializer,$stateParams,$timeout,$ionicLoading,$ionicPopup,$ionicPopover,$ionicSlideBoxDelegate,$ionicHistory,ionicMaterialInk,ionicMaterialMotion, sharedCartService,CartServiceBebidasEx, $location, DBLocalAdBebidas){

    // VERIFICA SE HÁ BEBIDAS EXTRAS

    $scope.bebidasextras = [];       

    var promise = $http.get('http://nhac.esy.es/api_carrinho/lista_bebida_extra.php?json=restaurantes')
      .success(function(retorno) {
        console.log(retorno);      



        $scope.bebidasextras = retorno; // não precisa fazer retorno.data

            $scope.user = {
                bebidasextras: [$scope.bebidasextras[1]]
              };
              $scope.checkAll = function() {
                $scope.user.bebidasextras = angular.copy($scope.bebidasextras);
              };
              $scope.uncheckAll = function() {
                $scope.user.bebidasextras = [];
              };
              $scope.checkFirst = function() {
                $scope.user.bebidasextras = [];
                $scope.user.bebidasextras.push($scope.bebidasextras[0]);                
              };
              $scope.setToNull = function() {
                $scope.user.bebidasextras = null;
              };


    })
    .error(function(erro) {        
        console.log(erro);
    });    


    // ADICIONA OU REMOVE ITENS
    $scope.sub = function(i) {
        i.ad_bebida_quantidade--;
    }

    $scope.add = function(i) {
        i.ad_bebida_quantidade++;
    }  



        // PEGA BEBIDAS SELECIONADAS      
        $scope.updateBebida = function(){
            var p = [];
            for (var i = 0; i < $scope.bebidasextras.length; i++) {
               var item = $scope.bebidasextras[i];
                console.log(item);
               if ( item.selected) {
                p.push(item )  
               }

            }

            $scope.selectedItems = p;
             var item;

    //aqi vai percorrer todo o conteudo da vriavep p, poderia ate dar
    //uma otimaizada e deixar junto com o p.push(item), ai "economiza" um for
    for(var i in p){
        item = p[i];
        console.log(item);
        var titulo = p.filter(function(e) {
            return e.titulo_promo == item.ad_bebida_titulo
            conlole.log(titulo);
        })




        // TESTA SE GUARDA A BEBIDA SELECIONADA

        // INSERINDO DADOS LOCALMENTE
        DBLocal.localdb();

        DBLocal.db.transaction(function(res) {
            res.executeSql("INSERT INTO AD_BEBIDAS (nome_bebida_ad) VALUES(?);", [item.ad_bebida_titulo]);
        });
    }
}
})

See what I’m trying to do using this excerpt:

// PEGA BEBIDAS SELECIONADAS      
    $scope.updateBebida = function(){
        var p = [];
        for (var i = 0; i < $scope.bebidasextras.length; i++) {
           var item = $scope.bebidasextras[i];
            console.log(item);
           if ( item.selected) {
            p.push(item )  
           }

        }

        $scope.selectedItems = p;
         var item;

//aqi vai percorrer todo o conteudo da vriavep p, poderia ate dar
//uma otimaizada e deixar junto com o p.push(item), ai "economiza" um for
for(var i in p){
    item = p[i];
    console.log(item);
    var titulo = p.filter(function(e) {
        return e.titulo_promo == item.ad_bebida_titulo
        conlole.log(titulo);
    })


    // TESTA SE GUARDA A BEBIDA SELECIONADA
    // INSERINDO DADOS LOCALMENTE
    DBLocal.localdb();

    DBLocal.db.transaction(function(res) {
        res.executeSql("INSERT INTO AD_BEBIDAS (nome_bebida_ad) VALUES(?);", [item.ad_bebida_titulo]);
    });
}

But it’s all wrong here, I can’t use... some light at the end of the tunnel? :)

2 answers

1


Uses the array.lenght > 0 will work!

  • Guys, thank you so much. I came back just to thank you! Thanks so much! :)

1

You can use a ng-if="bebida.ad_bebida_quantidade > 0" on the Continue order button there it will not be created until the quantity is greater than 0 so:

<button class="button button-block button-assertive" ng-click="updateBebida()" ng-if="bebida.ad_bebida_quantidade > 0"> <!-- Chama para armazenar num WebSQL -->
                    Continuar o Pedido
             </button>   
  • Okay, it’s already changing the amount and only shows zero if > 0. I think I misspelled. My question is when you click on the "Continue Ordering" button to pick up only the items with Quantity > 0, placing in an array.

  • I edited the title and the first paragraph, because I think I posted half wrong, missing information.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.