Browse Source

Use serializeFormToObject

Set initial quantity value in EditModal
pull/137/head
gdlcf88 5 years ago
parent
commit
6672d9dbb3
  1. 17
      plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Web/Pages/EShop/Plugins/Baskets/BasketItems/BasketItem/CreateModal.cshtml
  2. 24
      plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Web/Pages/EShop/Plugins/Baskets/BasketItems/BasketItem/EditModal.cshtml

17
plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Web/Pages/EShop/Plugins/Baskets/BasketItems/BasketItem/CreateModal.cshtml

@ -34,7 +34,7 @@
$form.on('submit', function(e){ $form.on('submit', function(e){
e.preventDefault(); e.preventDefault();
var service = easyAbp.eShop.plugins.baskets.basketItems.basketItem; var service = easyAbp.eShop.plugins.baskets.basketItems.basketItem;
service.generateClientSideData({ items: [ getFormData() ] }, { service.generateClientSideData({ items: [ $form.serializeFormToObject().viewModel ] }, {
success: function (responseText, statusText, xhr, form) { success: function (responseText, statusText, xhr, form) {
var basketItems = JSON.parse(localStorage.getItem(localStorageItemKey)) || []; var basketItems = JSON.parse(localStorage.getItem(localStorageItemKey)) || [];
basketItems = pushOrUpdateBasketItem(basketItems, responseText.items[0]) basketItems = pushOrUpdateBasketItem(basketItems, responseText.items[0])
@ -51,21 +51,6 @@
}); });
}); });
String.prototype.toCamelCase = function() {
return this.replace(/^([A-Z])|\s(\w)/g, function(match, p1, p2, offset) {
if (p2) return p2.toUpperCase();
return p1.toLowerCase();
});
};
function getFormData() {
const PREFIX = "ViewModel.";
return $('form').serializeArray().reduce(function(obj, item) {
obj[item.name.slice(PREFIX.length).toCamelCase()] = item.value;
return obj;
}, {});
}
function pushOrUpdateBasketItem(basketItems, item) { function pushOrUpdateBasketItem(basketItems, item) {
var index = basketItems.findIndex(x => x.storeId === item.storeId && x.productId === item.productId && x.productSkuId === item.productSkuId); var index = basketItems.findIndex(x => x.storeId === item.storeId && x.productId === item.productId && x.productSkuId === item.productSkuId);
if (index >= 0) { if (index >= 0) {

24
plugins/Baskets/src/EasyAbp.EShop.Plugins.Baskets.Web/Pages/EShop/Plugins/Baskets/BasketItems/BasketItem/EditModal.cshtml

@ -29,14 +29,17 @@
$(document).ready(function() { $(document).ready(function() {
if (@(Model.ServerSide ? "true" : "false")) return; if (@(Model.ServerSide ? "true" : "false")) return;
var basketItems = JSON.parse(localStorage.getItem(localStorageItemKey)) || [];
var index = basketItems.findIndex(x => x.id === '@Model.Id');
$('#ViewModel_Quantity').val(basketItems[index].quantity);
var $form = $("form"); var $form = $("form");
$form.off('submit'); $form.off('submit');
$form.on('submit', function(e){ $form.on('submit', function(e){
e.preventDefault(); e.preventDefault();
var service = easyAbp.eShop.plugins.baskets.basketItems.basketItem; var service = easyAbp.eShop.plugins.baskets.basketItems.basketItem;
var basketItems = JSON.parse(localStorage.getItem(localStorageItemKey)) || []; basketItems[index].quantity = parseInt($form.serializeFormToObject().viewModel.quantity);
var index = basketItems.findIndex(x => x.id === '@Model.Id');
basketItems[index].quantity = parseInt(getFormData()['quantity']);
service.generateClientSideData({ items: [ basketItems[index] ] }, { service.generateClientSideData({ items: [ basketItems[index] ] }, {
success: function (responseText, statusText, xhr, form) { success: function (responseText, statusText, xhr, form) {
localStorage.setItem(localStorageItemKey, JSON.stringify(basketItems)); localStorage.setItem(localStorageItemKey, JSON.stringify(basketItems));
@ -51,19 +54,4 @@
}); });
}); });
}); });
String.prototype.toCamelCase = function() {
return this.replace(/^([A-Z])|\s(\w)/g, function(match, p1, p2, offset) {
if (p2) return p2.toUpperCase();
return p1.toLowerCase();
});
};
function getFormData() {
const PREFIX = "ViewModel.";
return $('form').serializeArray().reduce(function(obj, item) {
obj[item.name.slice(PREFIX.length).toCamelCase()] = item.value;
return obj;
}, {});
}
</script> </script>
Loading…
Cancel
Save