Free U.S. Shipping Over $49
- Best Sellers
Bags
-
-
Best Sellers
-
Backpacks
-
Travel Bags
-
Laptop Bags
-
-
Collapsible Bags
-
Bag Bundles
-
Sale
Camera
-
All Camera
-
Best Sellers
-
Camera New Arrivals
-
Camera Slings
-
Camera Accessories
Shop Peter McKinnon Collection Luma Camera CollectionDesigned with Peter McKinnonLuggage
-
All Luggage
-
Carry-On Luggage
-
Check-In Luggage
Shop All Luggage Shop Carry-On Luggage- Best Sellers
-
Bags
Best Sellers
Backpacks
Travel Bags
Laptop Bags
Collapsible Bags
Bag Bundles
Shop Best SellersShop BackpackBest For Daily Use -
Camera
All Camera
Best Sellers
Camera New Arrivals
Camera Slings
Camera Accessories
Shop Peter McKinnon CollectionLuma Camera CollectionDesigned with Peter McKinnonCamera Accessories -
Luggage
All Luggage
Carry-On Luggage
Check-In Luggage
Shop All LuggageShop Carry-On LuggageShop Check-in Luggage -
Apparel
Shop All
Jacket
Pant
T-Shirt
Jogger
Outset JacketJacket to Pillow in SecondsOutset T-ShirtBuy 3 or More, Save 15% -
Accessories
All Accessories
Best Sellers
Travel Accessories
Camera Accessories
Everyday Accessories
Garment Bags
Shop All AccessoriesShop Packing CubesShop Toiletry Bag
account Log in icon-search Searchicon-cartCart
Regular price$399.99
/
+Free Shipping
Not just a camera bag, the McKinnon Camera Pack 35L is a full travel system. Thoughtful compartmentalization with customizable dividers means you can choose how you want to pack. A separate clothing compartment holds up to three days’ worth of luggage thanks to the pack’s seven liters of expansion. And when it comes to your gear, a quick access design keeps your camera close at hand, plus we’ve added an external laptop pocket and easy access pockets for essentials. Whether you’re a professional photographer, a travel adventurer, or a blend of both, the McKinnon 35L can seamlessly do it all.
Built to comfortably hold your camera equipment and clothing for two-to-four-day journeys, the McKinnon Camera Pack 35L is the ultimate adventure companion. First and foremost, the pack is compartmentalized into two sections: the first being a camera gear organizer. This part of the pack features innovative folding dividers so you can customize the way you pack your camera equipment. Internal mesh pockets store your cords, hard drives and other small essential, and you can seamlessly integrate other accessories (not included) like the McKinnon Cube Pack 21L and the McKinnon Tech Organizer.
Moving to the luggage compartment, you can comfortably pack up to four days of clothing by utilizing the pack’s expansion zipper that gives you seven extra liters of space. We’ve included containment straps, and small garment pockets as well so you can stay organized.
Externally, we’ve optimized the pack for quick access, featuring a size access pocket so your camera is always at hand. A laptop sleeve holds up to a 16” MacBook Pro, and easy access external storage include an RFID-safe pocket for scannable items such as credit cards or a passport. Two magnetic external water bottle pockets hide away when not in use, and can also hold tripods. Finally, to support the load, a full internal suspension system distributes the weight evenly while multiple external adjustment and support straps including a removable waist strap keep you comfortable on the move.
Endless Customization | 4 medium and 5 small innovative folding dividers for organization
Dedicated Storage | External laptop sleeve holds 16” MacBook
Easy Access | Full back panel and quick side access keeps camera gear close at hand
Pack like a Pro | Compartmentalized design packs both clothes and camera gear separately
Space for Everything | Expands from 35 to 42 liters
Comfort on the Move | Full internal suspension system and removable waist straps
Built to Last | Durable water-resistant materials and zippers
Endless Customization
Dedicated Storage
Space for Everything
Comfort on the Move
Built to Last
External Dimensions:
22" H x 13.5" W x 9" DInterior Dimensions of main compartment:
21" x 12.5" x 5.25"Expands from: 35L to 42L
Weight:
5.75 lbsMax Laptop Size (Side Sleeve):
15.5” x 11”Max Laptop Size (Internal Sleeve):
13” 11.5”Country of Origin: Philippines
Does not include rain fly
The main external fabric used for our Camera Pack line is N900D square ripstop with 0.20mm film-laminated TPU65 coating which is extremely durable and water resistant. The bottom section of the cube pack uses that same material, and the top collapsing section is N420D with 5PM coating. We’ve used high-strength nylon webbing, durable urethane-coated zippers, Hypalon lash points and reinforcements, and a compression-molded EVA back panel. The harness is designed to stay comfortable even under heavy loads with dual-density EVA and PE foam padding and high-grade air mesh.
The harness is linked to the aluminum and stays in the frame sheet via the load-lifter straps. When worn with the hip belt, this system transfers some of the load off of your shoulders, onto your hips for a more comfortable and efficient carry.
Interior materials include Velux hook-and-loop compatible fabric which holds up under intense cycle testing. We quilted it to the underlying layers of padding to make sure it never pulls away from the walls or floor. Elsewhere we’ve used high-density nylon 210D liner fabric and mesh.
McKinnon Camera Pack 35L
Waist Strap
4 Medium Dividers
5 Small Dividers'); const $btn = $t.addBtn(); $wrap.append($btn); $t.j('body').append($wrap); setTimeout(()=>{ $t.addEvents(); }, 1100); } } addBtn(){ const $t = this; const $btn = $t.j(''); $btn.on('click', function($e){ $e.preventDefault(); if($t.hasNode('[data-nm001-buy_buttons-class="nm001-buy_buttons-buy-now-btn"]')){ $t.j('[data-nm001-buy_buttons-class="nm001-buy_buttons-buy-now-btn"]').trigger('click'); } else{ $t.j('.product-single__meta .payment-buttons > .add-to-cart').trigger('click'); } }); return $btn; } addEvents(){ const $t = this; if($t.hasNode('[data-nm001-buy_buttons-class="nm001-buy_buttons-buy-now-btn-wrap"] .add-to-cart')){ $t.inview.addEvent('[data-nm001-buy_buttons-class="nm001-buy_buttons-buy-now-btn-wrap"] .add-to-cart', '[data-nm005-class="nm005-34b1f720_54ad_418c_aa0f_62bae38deb6c-scrolling-atc-btn-wrap"]', 'nm005-inview'); } else{ $t.inview.addEvent('.product-single__meta .payment-buttons > .add-to-cart', '[data-nm005-class="nm005-34b1f720_54ad_418c_aa0f_62bae38deb6c-scrolling-atc-btn-wrap"]', 'nm005-inview'); } $t.scrollingEvents(); document.addEventListener('scroll', ()=>{ $t.scrollingEvents(); }); window.addEventListener('resize', ()=>{ $t.scrollingEvents(); }); window.addEventListener('orientationchange', ()=>{ $t.scrollingEvents(); }); $t.wait('#chat-button', ()=>{ $t.scrollingEvents(); }); $t.buttonListener(); } buttonListener(){ const $t = this; const $b = $t.j('[data-nm005-class="nm005-34b1f720_54ad_418c_aa0f_62bae38deb6c-scrolling-atc-btn"]'); let $a = false; setInterval(()=>{ if($t.j('.product-single__meta .payment-buttons > .add-to-cart').prop('disabled') || $t.j('.product-single__meta .payment-buttons > .add-to-cart').attr('disabled') === 'disabled'){ if(!$a){ const $txt = $t.j('.product-single__meta .payment-buttons > .add-to-cart').text().trim(); $a = true; $b.prop('disabled', true); $b.attr('disabled', 'disabled'); $b.html($txt); } } else{ if($a){ const $txt = 'Add to Cart'; $a = false; $b.prop('disabled', false); $b.removeAttr('disabled'); $b.html($txt); } } }, 50); } scrollingEvents(){ const $t = this; if($t.hasNode('[data-mobilemenu-inner="djar-nm002-mobileMenu"]')){ if($t.j('[data-mobilemenu-inner="djar-nm002-mobileMenu"]').hasClass('data-mobileMenu-inner-active')){ $t.j('[data-nm005-class="nm005-34b1f720_54ad_418c_aa0f_62bae38deb6c-scrolling-atc-btn-wrap"]').addClass('nm005-mobile-menu-active'); if($t.j('[data-nm005-class="nm005-34b1f720_54ad_418c_aa0f_62bae38deb6c-scrolling-atc-btn-wrap"]').hasClass('nm005-inview')){ $t.j('#chat-button').attr('data-nm005-class', 'no-scrolling-atc-mobile-menu'); } else{ $t.j('#chat-button').attr('data-nm005-class', 'scrolling-atc-mobile-menu'); } } else{ $t.j('[data-nm005-class="nm005-34b1f720_54ad_418c_aa0f_62bae38deb6c-scrolling-atc-btn-wrap"]').removeClass('nm005-mobile-menu-active'); if($t.j('[data-nm005-class="nm005-34b1f720_54ad_418c_aa0f_62bae38deb6c-scrolling-atc-btn-wrap"]').hasClass('nm005-inview')){ $t.j('#chat-button').attr('data-nm005-class', 'no-scrolling-atc-no-mobile-menu'); } else{ $t.j('#chat-button').attr('data-nm005-class', 'scrolling-atc-no-mobile-menu'); } } } else{ if($t.j('[data-nm005-class="nm005-34b1f720_54ad_418c_aa0f_62bae38deb6c-scrolling-atc-btn-wrap"]').hasClass('nm005-inview')){ $t.j('#chat-button').attr('data-nm005-class', 'no-scrolling-atc-no-mobile-menu'); } else{ $t.j('#chat-button').attr('data-nm005-class', 'scrolling-atc-no-mobile-menu'); } } } } class $inViewClass{ constructor($j){ this.j = $j; } inView($selector, $selector2Toggle, $toggleClass, $inViewFunc, $notInViewFunc){ const $t = this; const $sh = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; const $elem = (typeof($selector) === 'object') ? $selector : document.querySelector($selector); const $st = (window.pageYOffset || document.documentElement.scrollTop) - (document.documentElement.clientTop || 0); const $ecp = $elem.getBoundingClientRect(); const $ect = $ecp.top + $st; const $ecb = $ect + $elem.offsetHeight; const $wb = $st + $sh; if(($ect > $st && $ecb < $wb) || ($ect > $st && $ect < $wb) || ($ecb > $st && $ecb < $wb)){ $t.j($selector2Toggle).addClass($toggleClass); if(typeof($inViewFunc) === 'function'){ $inViewFunc(); } } else{ $t.j($selector2Toggle).removeClass($toggleClass); if(typeof($notInViewFunc) === 'function'){ $notInViewFunc(); } } } addEvent($selector, $selector2Toggle, $toggleClass, $inViewFunc, $notInViewFunc){ const $t = this; $t.inView($selector, $selector2Toggle, $toggleClass); document.addEventListener('scroll', ()=>{ $t.inView($selector, $selector2Toggle, $toggleClass, $inViewFunc, $notInViewFunc); }); window.addEventListener('resize', ()=>{ $t.inView($selector, $selector2Toggle, $toggleClass, $inViewFunc, $notInViewFunc); }); window.addEventListener('orientationchange', ()=>{ $t.inView($selector, $selector2Toggle, $toggleClass, $inViewFunc, $notInViewFunc); }); } } const $cro_nm005_34b1f720_54ad_418c_aa0f_62bae38deb6c = new $cro_nm005_34b1f720_54ad_418c_aa0f_62bae38deb6c_class(); $cro_nm005_34b1f720_54ad_418c_aa0f_62bae38deb6c.run(); });
Meet the
MCKINNON CAMERA PACK 35L
Not just a camera bag, the McKinnon Camera Pack 35L is a full travel system. Thoughtful compartmentalization with customizable dividers means you can choose how you want to pack.
CUSTOMIZE
YOUR PACKINGInnovative folding dividers allow for endless customization.
CLOTHING SECTION
Expand the clothing section to pack everything in one bag.
QUICK
SIDE ACCESSNever miss that shot while you are on the move.
STRAPS & SUPPORT
Includes Waist and chest straps, aluminum stays, and shoulder tensioners lighten your load. 2 Included gear straps let you lash tripods or other gear to external gear loops.
McKinnon Camera Pack 35L FAQs
Yes! It comes with:
4 Medium Dividers
5 Small DividersThe Mckinnon 35L Camera Bag comes with 2 external accessory straps.
The side access door will admit cameras as tall as the Canon 5D with lens attached. Most DSLRs with battery grips attached will not fit through the side door. Taller cameras such as the 1Dx will not fit in an upright position but fit well when laid flat without a lens.
Main Gear Compartment dimensions: 21" x 12.5" x 5.25"Depending on how you pack the facing wall with the tablet compartment and mesh organizer pockets, you may be able to fit items that are taller than the 5.25” height of the sidewalls. Also, the wall between the clothing compartment and gear compartment has a bit of flex, so load the gear side first if you want to maximize the usable space on that side
You may also like
Best Seller
McKinnon Camera Pack 35L $399.99-
McKinnon Camera Pack 35L
'); $n.before($o); } }); } addSlider($nodes){ const $t = this; $t.wait('[data-nm009-class="nm009-upsell-slider-container"]', ($n)=>{ if(!$t.hasNode('[data-nm009-class="nm009-upsell-slider"]')){ const $o = $t.j('
'); const $ceil = Math.ceil(($nodes.length - 2) / 2); for(let $c = 0; $c < $ceil; $c++){ const $li = $t.j('
'); $nodes.each(($i, $l)=>{ if($i < ($nodes.length - 2)){ if($c === (Math.floor($i / 2))){ const $clone = $t.j($l).children('.upcart-upsell-item-card').clone(true); $clone.attr('data-nm009-slide-clone-index', $i); $t.j($l).attr('data-nm009-slide-index', $i); if($clone.find('select').length > 0){ $clone.find('select').on('change', function($e){ $e.preventDefault(); const $form = $t.j(this).closest('form'); const $href = $form.prev().find('a').attr('href'); const $query = ($href.indexOf('?') !== -1) ? $href.split('?') : [$href]; const $pathname = $query[0].split('/'); const $handle = $pathname[$pathname.length - 1]; $t.debug($handle + ' ' + $t.j(this).val()); $t.j.ajax({ url: '/products/' + $handle + '/.js', type: 'GET', dataType: 'json', success: ($r)=>{ $t.each($r.variants, ($variant, $vc)=>{ if($variant.id === parseInt($form.find('select').val())){ const $img = ($variant.featured_image !== null && typeof($variant.featured_image.src) === 'string') ? $variant.featured_image.src : $r.images[0]; $t.debug('img ' + $img); $form.prev().find('.upcart-upsell-item-price').html('$' + ($variant.price * .01).toFixed(2)); $form.closest('.upcart-upsell-item-card').find('.upcart-upsell-item-image').attr('src', $img); } }); }, error: ($x, $s, $e)=>{ console.log($x); console.log($s); console.log($e); } }); }); $clone.find('input[type="submit"]').on('click', function($e){ $e.preventDefault(); $t.debug($t.j(this).closest('form').find('select').val()); const $d = { items: [ {id: parseInt($t.j(this).closest('form').find('select').val()), quantity: 1} ] }; $t.cart.add($d, ()=>{ $t.debug('added upsell product'); window.upcartRegisterAddToCart(); }); }); $clone.find('input[type="submit"]').attr('type', 'button'); } else{ $clone.find('input[type="submit"]').on('click', function($e){ $e.preventDefault(); $t.j('[data-nm009-slide-index="' + $i + '"]').find('input[type="submit"]').eq(0).trigger('click'); }); $clone.find('input[type="submit"]').attr('type', 'button'); } $li.append($clone); } } }); $o.append($li); } $n.append($o); $t.slider.init('[data-nm009-class="nm009-upsell-slider"]', $t.sliderID, {addWrap: true, attrs: [ {name: 'display',value: 1}, {name: 'move-slide', value: 1}, {name: 'current-slide',value: 1}, {name: 'display-mobile',value: 1}, {name: 'current-slide-mobile',value: 1}, {name: 'move-slide-mobile',value: 1}, {name: 'controls',value: 1}, {name: 'pagination',value: 0}, {name: 'touch',value: 1} ]}) } }); } } class $cookiesClass{ constructor(){} set($n, $v, $exd){ const $d = new Date(); $d.setTime($d.getTime() + ($exd * 24 * 60 * 60 * 1000)); const $exp = 'expires=' + $d.toUTCString(); document.cookie = $n + '=' + $v + ';' + $exp + ';path=/'; } get($nm){ const $n = $nm + '='; const $decode = decodeURIComponent(document.cookie); const $ca = $decode.split(';'); for(const $ck of $ca){ if($ck.indexOf($n) !== -1){ const $s = $ck.split('='); return $s[1]; } } return ''; } check($n){ const $ck = this.get($n); return ($ck !== '') ? true : false; } } class $sliderClass{ constructor($j = jQuery, $hasNode = ()=>{}, $each = ()=>{}){ this.j = $j; this.hasNode = $hasNode; this.each = $each; }; init($selector, $id = 'sliderID', $params = {addWrap: true, attrs: []}){ const $t = this; $t.j($selector).attr('data-slider-id', $id); if($params.addWrap){ const $o = $t.j('
'); $t.j($selector).before($o); $o.append($t.j($selector)); } else{ $t.j($selector).parent().attr('data-slider-wrap', $id); } $t.tagSliderItems($selector); $t.updateAttrs($id, $params.attrs); $t.addStyle($id); } tagSliderItems($selector){ const $t = this; $t.j($selector).children().each(($i, $l)=>{ $t.j($l).attr('data-slider-item', $i); }); } updateAttrs($id, $attrs){ const $t = this; if($attrs.length > 0){ $t.each($attrs, ($p, $c)=>{ $t.j('[data-slider-id="' + $id + '"]').attr('data-slider-' + $p.name, $p.value); $t.updateAttr($id, $p); }); } } updateAttr($id, $param){ const $t = this; switch($param.name){ case 'controls': if($param.value === 1){ $t.addControls($id); } break; case 'pagination': if($param.value === 1){ $t.addPagination($id); } break; case 'touch': if($param.value === 1){ $t.addTouchEvents($id); } break; default: break; } } addControls($id){ const $t = this; const $wrap = $t.j('[data-slider-wrap="' + $id + '"]'); const $next = $t.j(''); const $prev = $t.j(''); $next.on('click', function($e){ $e.preventDefault(); $t.next($id); if(typeof($t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide-mobile')) !== 'undefined'){ $t.next($id, true); } }); $prev.on('click', function($e){ $e.preventDefault(); $t.prev($id); if(typeof($t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide-mobile')) !== 'undefined'){ $t.prev($id, true); } }); $wrap.after($next); $wrap.after($prev); } next($id, $mobile = false){ const $t = this; const $m = ($mobile) ? '-mobile' : ''; const $current = $t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide' + $m); const $active = $t.j('[data-slider-id="' + $id + '"]').attr('data-slider-move-slide' + $m); const $tabs = Math.ceil($t.j('[data-slider-id="' + $id + '"]').children('[data-slider-item]').length / parseInt($active)); const $display = parseInt($t.j('[data-slider-id="' + $id + '"]').attr('data-slider-display' + $m)); const $end = ($display > 1) ? $tabs - $display : $tabs; const $next = (parseInt($current) + 1 <= $end) ? parseInt($current) + 1 : 1; $t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide' + $m, $next); $t.updatePagination($id, $next, $mobile); } prev($id, $mobile = false){ const $t = this; const $m = ($mobile) ? '-mobile' : ''; const $current = $t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide' + $m); const $active = $t.j('[data-slider-id="' + $id + '"]').attr('data-slider-move-slide' + $m); const $tabs = Math.ceil($t.j('[data-slider-id="' + $id + '"]').children('[data-slider-item]').length / parseInt($active)); const $display = parseInt($t.j('[data-slider-id="' + $id + '"]').attr('data-slider-display' + $m)); const $end = ($display > 1 && $tabs > 1) ? $tabs - $display : $tabs; const $next = (parseInt($current) - 1 >= 1) ? parseInt($current) - 1 : $end; $t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide' + $m, $next); $t.updatePagination($id, $next, $mobile); } addPagination($id){ const $t = this; const $current = $t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide') || 1; const $mCurrent = $t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide-mobile') || 1; const $wrap = $t.j('[data-slider-wrap="' + $id + '"]'); const $page = $t.j('
'); $t.j('[data-slider-id="' + $id + '"]').children('[data-slider-item]').each(($i, $l)=>{ let $a = ($i + 1 === parseInt($current)) ? ' class="pagination-item-active"' : ''; if(typeof($t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide-mobile')) !== 'undefined'){ $a = ($i + 1 === parseInt($mCurrent)) ? ' class="pagination-item-active pagination-item-mobile-active"' : $a; $a = ($i + 1 === parseInt($current) && $i + 1 === parseInt($mCurrent)) ? ' class="pagination-item-active pagination-item-mobile-active"' : $a; } const $li = $t.j('
'); $li.on('click', function($e){ $e.preventDefault(); $t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide', $t.j(this).attr('data-slider-pagination-item')); $t.updatePagination($id, $t.j(this).attr('data-slider-pagination-item')); if(typeof($t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide-mobile')) !== 'undefined'){ $t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide-mobile', $t.j(this).attr('data-slider-pagination-item')); $t.updatePagination($id, $t.j(this).attr('data-slider-pagination-item', true)); } }); $page.append($li); }); $wrap.append($page); } updatePagination($id, $next, $mobile = false){ const $t = this; if($mobile){ $t.j('[data-slider-pagination-container="' + $id + '"] [data-slider-pagination-item]').removeClass('pagination-item-mobile-active'); $t.j('[data-slider-pagination-container="' + $id + '"] [data-slider-pagination-item="' + $next + '"]').addClass('pagination-item-mobile-active'); } else{ $t.j('[data-slider-pagination-container="' + $id + '"] [data-slider-pagination-item]').removeClass('pagination-item-active'); $t.j('[data-slider-pagination-container="' + $id + '"] [data-slider-pagination-item="' + $next + '"]').addClass('pagination-item-active'); } } addTouchEvents($id){ const $t = this; const $n = document.querySelector('[data-slider-id="' + $id + '"]'); let $xTouch = null; $n.addEventListener('touchstart', function($e){ $xTouch = $e.touches[0].clientX; }); $n.addEventListener('touchmove', function($e){ if(!$xTouch){return;} let $xUp = $e.touches[0].clientX; let $xDif = $xTouch - $xUp; if($xDif > 0){ $t.next($id); if(typeof($t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide-mobile')) !== 'undefined'){ $t.next($id, true); } } else{ $t.prev($id); if(typeof($t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide-mobile')) !== 'undefined'){ $t.prev($id, true); } } $xTouch = null; }); } addStyle($id){ const $t = this; let $l = ''; const $i = $t.j('[data-slider-id="' + $id + '"] > [data-slider-item]').length; for(let $c = 0; $c < $i; $c++){ const $off = $c * -100; $l = $l + '[data-slider-current-slide="' + ($c + 1) + '"]{' + 'transform: translateX(' + $off + '%);' + '}'; } if(typeof($t.j('[data-slider-id="' + $id + '"]').attr('data-slider-current-slide-mobile')) !== 'undefined'){ $l = $l + '@media all and (max-width: 767px) { '; for(let $c = 0; $c < $i; $c++){ const $off = $c * -100; $l = $l + '[data-slider-current-slide-mobile="' + ($c + 1) + '"]{' + 'transform: translateX(' + $off + '%);' + '}'; } $l = $l + '} '; } if($t.hasNode('[data-slider-css="' + $id + '"]')){ const $s = $t.j('[data-slider-css="' + $id + '"]'); $s.html(''); $s.html($l); } else{ const $s = $t.j('
'); $s.html($l); $t.j('body').append($s); } } } class $shopifyCartClass{ constructor($j){ this.cartcount = 0; this.j = $j; } add($data, $callBack){ const $t = this; if($data.items.length > 0){ $t.get(($r)=>{ $t.cartcount = $r.item_count; console.log($t.cartcount); $t.j.ajax({ url: '/cart/add.js', type: 'POST', data: $data, dataType: 'json', success: ()=>{ $t.get(($rq)=>{ if($t.cartcount < $rq.item_count){ $callBack($rq); } }); }, error: ($x, $s, $e)=>{ console.log($x); console.log($s); console.log($e); } }); }); } } get($callBack){ const $t = this; $t.j.ajax({ url: '/cart.js', type: 'GET', dataType: 'json', success: ($rq)=>{ $callBack($rq); }, error: ($x, $s, $e)=>{ console.log($x); console.log($s); console.log($e); } }); } } const $djar_nm009_v1 = new $djar_nm009_v1_class(); $djar_nm009_v1.run();});