O incremento e decremento do produto funciona somente se atualizar a pagina do meu carrinho com F5, fiz teste com outros navegadores todos permanecem da mesma forma . O visual studio tbm não aparece nenhum erro ou aviso especificando. O instrutor informou na vídeo aula para a acrescentar função var token, porém mesmo com essa função, ainda ` não funcionou . Oque eu faço ? Segue os codigos :
class Carrinho {
clickIncremento(btn) {
var data = this.getData(btn);
data.Quantidade++;
this.postQuantidade(data);
}
clickDecremento(btn) {
var data = this.getData(btn);
data.Quantidade--;
this.postQuantidade(data);
}
updateQuantidade(input) {
var data = this.getData(input);
this.postQuantidade(data);
}
getData(elemento) {
var linhaDoItem = $(elemento).parents('[item-id]');
var itemId = linhaDoItem.attr('item-id');
var qtde = linhaDoItem.find('input').val();
return {
Id: itemId,
Quantidade: qtde
};
}
postQuantidade(data) {
var token = $('input[name=__RequestVerificationToken]').val();
var header = {};
header['RequestVerificationToken'] = token;
$.ajax({
url: '/pedido/PostQuantidade',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(data),
headers: header
}).done(function (response) {
this.setQuantidade(response.itemPedido);
this.setSubtotal(response.itemPedido);
this.setTotal(response.carrinhoViewModel);
this.setNumeroItens(response.carrinhoViewModel);
if (response.itemPedido.quantidade == 0)
this.removeItem(response.itemPedido);
}.bind(this));
}
setQuantidade(itemPedido) {
this.getLinhaDoItem(itemPedido)
.find('input').val(itemPedido.quantidade);
}
setSubtotal(itemPedido) {
this.getLinhaDoItem(itemPedido)
.find('[subtotal]').html(itemPedido.subtotal.duasCasas());
}
setTotal(carrinhoViewModel) {
$('[total]').html(carrinhoViewModel.total.duasCasas());
}
getLinhaDoItem(itemPedido) {
return $('[item-id=' + itemPedido.id + ']');
}
removeItem(itemPedido) {
this.getLinhaDoItem(itemPedido).remove();
}
setNumeroItens(carrinhoViewModel) {
var texto =
'Total: '
+ carrinhoViewModel.itens.length
+ ' '
+ (carrinhoViewModel.itens.length > 1
? 'itens' : 'item');
$('[numero-itens]').html(texto);
}
}
var carrinho = new Carrinho();
Number.prototype.duasCasas = function () {
return this.toFixed(2).replace('.', ',');
}
insira seu código aqui
``` Carrinho.cshtml
@foreach (var item in Model.Itens)
{
<div class="row row-center" item-id="@item.Id">
<div class="col-md-3">
<img src="~/images/produtos/small_@(item.Produto.Id).jpg" />
</div>
<div class="col-md-3">@item.Produto.Nome</div>
<div class="col-md-2 text-center">R$ @item.PrecoUnitario</div>
<div class="col-md-2 text-center">
<div class="input-group">
<span class="input-group-btn">
<button class="btn btn-default"
onclick="carrinho.clickDecremento(this)">
<span class="glyphicon-minus"></span>
</button>
</span>
<input type="text" value="@item.Quantidade"
class="form-control text-center"
onblur="carrinho.updateQuantidade(this)" />
<span class="input-group-btn">
<button class="btn btn-default"
onclick="carrinho.clickIncremento(this)">
<span class="glyphicon-plus">
</button>
</span>
</div>
</div>
insira seu código aqui ```