gpt4 book ai didi

javascript - 推送时 ng-repeat 失败

转载 作者:可可西里 更新时间:2023-11-01 00:40:32 26 4
gpt4 key购买 nike

我有 Angular 问题,这是我的代码

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;
}

});

问题是,当我选择一个产品时,会进行推送,但值(value)始终是股票的值(value),我想要的是,当你进行推送时,你总是将股票值(value)更改为 1。我注意到的另一件事是当更改“库存”字段中的值时,在搜索产品的数组中也发生了更改,我不知道该怎么做:(我已经尝试使它正常工作很多天了,我希望他们将照亮道路。

问候

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

最佳答案

"$scope.total"是一个函数,不是一个作用域变量。因此,除非您进行显式调用,否则双向绑定(bind)在这种情况下不起作用。让它工作:对 Controller 和 HTML 进行以下更改。 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 更改:

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

希望对你有帮助

关于javascript - 推送时 ng-repeat 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41254732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com