Todas outras funções estão funcionando ok, porem a parte de remoção de item só funciona quando atualizo a pagina.
Segue abaixo todo meu codigo java script
Outro comportamento estranho, é que no trecho : Se eu " if (response.itemPedido.quantidade == 0", o visual studio reclama dizendo que precisa ser " if (response.itemPedido.quantidade === 0"
if (response.itemPedido.quantidade < 1) {
this.removeItem(response.itemPedido);
}
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);
}
updateQuantidate(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) {
$.ajax({
url: '/pedido/PostQuantidade',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(data)
}).done(function (response) {
this.setQuantidade(response.itemPedido);
this.setSubtotal(response.itemPedido);
this.setTotal(response.carrinhoViewModel);
this.setNumeroItens(response.carrinhoViewModel);
if (response.itemPedido.quantidade < 1) {
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.lenght
+ ' '
+ (carrinhoViewModel.intens.lenght > 1 ? 'itens' : 'Item');
$('[numero-itens]').html(texto);
}
}
Number.prototype.duasCasas = function () {
return this.toFixed(2).replace('.', ',');
}
var carrinho = new Carrinho();