我觉得我的逻辑很接近,但是我还不很清楚。我想从下拉列表“大小”中获取信息,然后将其与产品的其余部分一起添加到我的购物车中。任何帮助都将不胜感激!
这是我的.add()逻辑,用于将商品添加到购物车。除了大小逻辑之外,其他所有东西都可以正常工作。 (加上大小)。
this.items = oldCart.items || {};
this.totalQty = oldCart.totalQty || 0;
this.totalPrice = oldCart.totalPrice || 0;
this.add = function(item, id, size){
var storedItem = this.items[id];
if(!storedItem) {
storedItem = this.items[id] = {item: item, qty: 0, price: 0, size: size}
}
storedItem.size += storedItem.size;
storedItem.qty++;
storedItem.price = storedItem.item.price * storedItem.qty;
this.totalQty++;
this.totalPrice += storedItem.item.price;
}
事实上,我已经通过console.log对我的“尺寸”变量中的“产品页面”获取了正确的尺寸信息。
这是我的路线:
outer.get('/add-to-cart/:id', function(req, res, next){
var productId = req.params.id;
var cart = new Cart(req.session.cart ? req.session.cart : {});
var size = req.query.bikeSize <--------------------------------------------
Product.findById(productId, function(err, product){
if(err){
// !!!!add an error message!!!!
return res.redirect('/');
}
cart.add(product, product.id, size); <---------------------
req.session.cart = cart;
console.log(req.session.cart);
res.redirect('/');
});
});
这是我显示的产品和尺寸。
<% products.forEach(function(product){ %>
<li class="list-group-item " id="checkoutGroup">
<img src="<%= product.item.mainImage %>" alt="">
<span class="badge"><%= product.qty %> </span>
<span><%= product.item.name %></span>
<span><%= product.size %></span> <----------------------------
<span class="">- $<%= product.price.toLocaleString(); %>.00</span>
<div class="btn-group" id="checkoutRemoveButton">
<button class="btn btn-xs dropdown-toggle" data-toggle="dropdown" type="button">Remove</button>
<ul class="dropdown-menu" id="checkoutDropdown">
<li><a href="/reduce/<%= product.item._id %>">Reduce by 1</a></li>
<hr>
<li><a href="/reduce-all/<%= product.item._id %>">Remove All</a></li>
</ul>
</div>
</li>
<% }); %>