Desde el template cuyo controller es giftcardsCtrl, ejecuto la funcion addItemCard cuando quier agregar un item al carro de compra. Si en cambio quiero quitar un item ejecuto la funcion removeItemCard
Tanto removeItemCard como addItemCard tienen un proceso comun ( cartGiftCard, setDataCart ) que he tenido que separar porque al usar addItemCard creo que estoy perdiendo la referencia a $scope.
Luego tengo otro problema con totalCartZP y balanceCartZP que en setDataCart funcionan como espero(al modificar su valor, se muestra en el template) pero en cartGiftCard no( al usar el inspector muestra que si setea).
Código Javascript:
Ver original
app.controller('giftcardsCtrl', function ($scope, $http, helper, onEvent, Modal, Param, Status) { $scope.card = {'name':'','prices':''}; $scope.queueCard = []; $scope.totalCartZP = 0; $scope.balanceCartZP = 0; $scope.cartGiftCard = function(cart){ if($scope.$parent.queueCard.length > 0){ $scope.$parent.queueCard.length = 0; } var total = 0; angular.forEach(cart, function (value){ for(var i = 0; i < value.quantity; i++ ) { total = total + value.points; $scope.$parent.queueCard.push({ 'item' : value.item, 'price' : value.price, 'name' : value.name, 'points' : value.points }); } i = 0; }); $scope.totalCartZP = total; $scope.balanceCartZP = $scope.totalCartZP - total; }; $scope.setDataCart = function(cart){ var total = 0; if($scope.queueCard.length > 0){ $scope.queueCard.length = 0; } var total = 0; angular.forEach(cart, function (value){ for(var i = 0; i < value.quantity; i++ ) { total = total + value.points; $scope.queueCard.push({ 'item' : value.item, 'price' : value.price, 'name' : value.name, 'points' : value.points }); } i = 0; }); $scope.totalCartZP = total; $scope.balanceCartZP = $scope.totalCartZP - total; }; $scope.status.queue = false; $scope.addItemCard = function (){ var push = { price : $scope.getCard.price, image : $scope.getCard.image, quantity : $scope.getCard.quantity }; $http.post('giftcard/item/add', push).success(function (data, status) { if (data.success == true) { $scope.cartGiftCard(data.data.gifts); } else { $scope.flash = {"message" : data.msg, "success": "warning"}; } }); }; $scope.removeItemCard = function (item){ $http.get('giftcard/item/remove/'+item).success(function (data, status) { if (data.success == true) { $scope.setDataCart(data.data.gifts); } }); }; });
Que puede estar ocurriendo?