2016-12-21 1 views
3
schieben

Ich habe ein Problem mit kantigen, dies ist mein CodeAusfallen mit ng-repeat wenn

HTML

<div class="row"> 
 
<div class="col-sm-12"> 
 
    <div class="panel panel-default"> 
 
     <div class="panel-heading"> 
 
      <h3 class="panel-title">Insertar presupuesto</h3> 
 
     </div> 
 
     <div class="panel-body"> 
 
      <!-- Trigger the modal with a button --> 
 
      <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#seleccionarp">Buscar producto</button> 
 
      <!-- Modal --> 
 
      <div id="seleccionarp" class="modal fade" role="dialog"> 
 
       <div class="modal-dialog"> 
 
        <!-- Modal content--> 
 
        <div class="modal-content"> 
 
         <div class="modal-header"> 
 
          <button type="button" class="close" data-dismiss="modal">&times;</button> 
 
          <h4 class="modal-title">Seleccione su producto</h4> 
 
         </div> 
 
         <div class="modal-body"> 
 
          <label for="Buscar cliente ">Buscar producto:</label> 
 
          <input class="form-control" id="buscarproducto" ng-model="busqueda[queryBy]" value="" placeholder="Buscar" /> 
 
          <div> 
 
           <table class="table table-hover"> 
 
            <tr> 
 
             <th>Descripcion</th> 
 
             <th>Color</th> 
 
             <th>Talle</th> 
 
             <th>Stock</th> 
 
             <th>Precio</th> 
 
            </tr> 
 
            <tbody ng-repeat="emp in posts | filter:busqueda"> 
 
             <tr ng-click="comprar(emp)" data-dismiss="modal"> 
 
              <td>{{emp.nombre_producto}}</td> 
 
              <td>{{emp.color}}</td> 
 
              <td>{{emp.talle}}</td> 
 
              <td>{{emp.stock}}</td> 
 
              <td>{{emp.precio | currency}}</td> 
 
             </tr> 
 
            </tbody> 
 
           </table> 
 
          </div> 
 
         </div> 
 
         <div class="modal-footer"> 
 
          <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button> 
 
         </div> 
 
        </div> 
 
       </div> 
 
      </div> 
 
      <table class="table table-hover"> 
 
       <thead> 
 
        <tr> 
 
         <th>Nombre del producto</th> 
 
         <th>Cantidad</th> 
 
         <th>Precio</th> 
 
         <th>Total</th> 
 
         <th></th> 
 
        </tr> 
 
       </thead> 
 
       <tbody ng-repeat="p in carrito track by $index"> 
 
        <input type="hidden" name="id_producto[]" value="{{p.id_producto}}" ng-model="p.id_producto" class="form-control"> 
 
        <input type="hidden" name="color[]" value="{{p.color}}" ng-model="p.color" class="form-control"> 
 
        <input type="hidden" name="talle[]" value="{{p.talle}}" ng-model="p.talle" class="form-control"> 
 
        <tr> 
 
         <td> 
 
          <input type="text" name="nombre_producto[]" ng-model="p.nombre_producto" class="form-control"> 
 
         </td> 
 
         <td> 
 
          <input type="number" name="stock[]" ng-model="p.stock" value="1" onClick="this.select();" class="form-control"> 
 
         </td> 
 
         <td> 
 
          <input type="text" name="precio[]" ng-model="p.precio" onClick="this.select();" class="form-control" value=""> 
 
         </td> 
 
         <td>{{p.stock * p.precio | currency}}</td> 
 
         <td> 
 
          <button type="button" class="btn btn-danger" ng-click="remove($index)">Eliminar</button> 
 
         </td> 
 
        </tr> 
 
       </tbody> 
 
      </table> 
 
      <h2>Total:${{total()}}</h2> 
 
      <input type="hidden" name="total_remito" value="{{total()}}"> 
 
      <button type="submit" name="button">guardar</button> 
 
     </div> 
 
    </div> 
 
</div>

AngularJS

app.controller("ctrlremitos", function($scope, $http) { 
 

 
$scope.posts = []; 
 

 
$scope.carrito = []; 
 

 
$scope.clienteasignado = []; 
 

 
$scope.clientes = []; 
 

 
$scope.busqueda = {} 
 

 
$scope.busquedaclientes = {} 
 

 
$scope.queryBy = '$' 
 

 
$scope.newPost = {}; 
 

 
$http.get(base_url + "venta/get_productos").success(function(data, timeout) { 
 
    $scope.posts = data; 
 
}).error(function(err) {}) 
 

 
$http.get(base_url + "venta/get_clientes").success(function(data) { 
 
    $scope.clientes = data; 
 
}).error(function(err) {}) 
 

 
$scope.comprar = function(_item, index) { 
 
    $scope.carrito.push(_item) 
 
} 
 

 
$scope.asignarcliente = function(_item) { 
 
    $scope.clienteasignado.push(_item) 
 
} 
 

 
$scope.remove = function(index) { 
 
     $scope.carrito.splice(index, 1); 
 
    }, 
 

 
    $scope.total = function() { 
 
     var total = 0; 
 
     angular.forEach($scope.carrito, function(p) { 
 
      total += p.stock * p.precio; 
 
     }) 
 
     return total; 
 
    } 
 

 
});

Das Problem ist, dass, wenn ich ein Produkt auswähle, tut der Druck aber der Wert ist immer der Wert der Aktie, was ich will ist, dass, wenn Sie das tun, ändern Sie den Wert der Aktie immer um 1. Eine andere Sache, die ich Beachten Sie, dass, wenn Sie den Wert im Feld "Stock" ändern, auch im Array der Suche nach Produkten geändert, ich weiß nicht, was zu tun ist :(Ich habe versucht, dies funktioniert für viele Tage, hoffe ich Sie werden den Weg erleuchten.

Grüße

https://github.com/outthesystem/facturacion-codeigniter

Antwort

2

"$ scope.total" ist eine Funktion, kein Rahmen variabel. Daher funktioniert die bidirektionale Bindung in diesem Szenario erst, wenn Sie einen expliziten Aufruf durchführen. Um es funktionieren zu lassen: die folgenden Änderungen an Controller und HTML vornehmen. Änderungen Controller:

$scope.total = 0; 

$scope.comprar = function(_item, index) { 
    $scope.carrito.push(_item); 
    $scope.calculateTotal(); //Make an explicit call to calculation method 
} 

$scope.calculateTotal = function() 
{ 
    angular.forEach($scope.carrito, function(p) { 
      $scope.total += p.stock * p.precio; 
     }) 
}; 

HTML Änderung:

<h2>Total:${{total}}</h2> 
      <input type="hidden" name="total_remito" value="{{total}}"> 

hoffe, das hilft

+0

Danke für die Hilfe, aber ich denke, ich mache mir nicht verständlich, ich habe ein Bild angehängt, um zu sehen, was passiert. –

+0

http://imgur.com/a/ik79B –

2

ich sehen kann, dass nicht Englisch ist in der HTML-Seite, aber was auch immer, wenn ich Ihre Fehler verstanden ist, dass Sie versuchen, etwas zu drücken, das nicht wirklich in Ihrem DOM

$scope.asignarcliente = function(_item) { 
$scope.clienteasignado.push(_item) 
} 
ist

Was ist $scope.clienteasignado ??? ; die aktuelle Liste, die Ihre i angezeigten wird $scope.posts genannt für Produkte korrigiert mich wenn ich einen Fehler mache so, wenn das ist die Liste der Produkte in schieben Sie es auf diese Weise

$scope.asignarcliente = function() { 
$scope.posts.push(emp); 
}  

ps diese Funktion auch nicht aufgerufen Recht müssen in die DOM Ihre definieren nur einen Knopf

<button type="submit" ng-click="asignarcliente()" class="btn btn-default" data-dismiss="modal">Cerrar</button> 

ich hoffe, dass ich das richtige Element manipuliert und ich hoffe, dass es für Sie arbeitet

+0

Danke für die Hilfe, aber ich denke, ich mache mir nicht verständlich, ich habe ein Bild angehängt, um zu sehen, was passiert. –

+0

http: // imgur.com/a/ik79B –

+0

ist für andere Push, wo der Client ausgewählt ist –