PageRenderTime 52ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/models/shopCart/Collection.js

https://bitbucket.org/borovin/shopcart
JavaScript | 46 lines | 43 code | 3 blank | 0 comment | 5 complexity | c53b7d481d48b5e1746e5dce19585346 MD5 | raw file
  1. define(
  2. [
  3. 'models/shopCart/Model',
  4. 'models/productList/productList'
  5. ],
  6. function(Model, shopListProducts) {
  7. return Backbone.Collection.extend({
  8. initialize: function(){
  9. var collection = this;
  10. collection
  11. .on('add change remove', function(){
  12. collection.sync();
  13. })
  14. },
  15. model: Model,
  16. url: '/shopCart/shopCart.json',
  17. addProduct: function(productId){
  18. var product = this.get(productId);
  19. if (product){
  20. product.set('amount', product.get('amount') + 1);
  21. } else {
  22. product = shopListProducts.get(productId);
  23. this.push(product.toJSON());
  24. }
  25. },
  26. removeProduct: function(productId){
  27. var product = this.get(productId);
  28. if (product.get('amount') <= 1){
  29. this.remove(product);
  30. } else {
  31. product.set('amount', product.get('amount') - 1);
  32. }
  33. },
  34. sync: function(){
  35. var collection = this;
  36. $.get(collection.url, collection.toJSON(), function(res){
  37. if (res.success) {
  38. window.localStorage.setItem('shopCartData', JSON.stringify(collection.toJSON()));
  39. }
  40. });
  41. }
  42. });
  43. });