Edit in JSFiddle

'use strict';
// include a third-party async loader library
/*!
 * $script.js v1.3
 * https://github.com/ded/script.js
 * Copyright: @ded & @fat - Dustin Diaz, Jacob Thornton 2011
 * Follow our software http://twitter.com/dedfat
 * License: MIT
 */
! function(a, b, c) {
  function t(a, c) {
    var e = b.createElement("script"),
      f = j;
    e.onload = e.onerror = e[o] = function() {
      e[m] && !/^c|loade/.test(e[m]) || f || (e.onload = e[o] = null, f = 1, c())
    }, e.async = 1, e.src = a, d.insertBefore(e, d.firstChild)
  }

  function q(a, b) {
    p(a, function(a) {
      return !b(a)
    })
  }
  var d = b.getElementsByTagName("head")[0],
    e = {},
    f = {},
    g = {},
    h = {},
    i = "string",
    j = !1,
    k = "push",
    l = "DOMContentLoaded",
    m = "readyState",
    n = "addEventListener",
    o = "onreadystatechange",
    p = function(a, b) {
      for (var c = 0, d = a.length; c < d; ++c)
        if (!b(a[c])) return j;
      return 1
    };
  !b[m] && b[n] && (b[n](l, function r() {
    b.removeEventListener(l, r, j), b[m] = "complete"
  }, j), b[m] = "loading");
  var s = function(a, b, d) {
    function o() {
      if (!--m) {
        e[l] = 1, j && j();
        for (var a in g) p(a.split("|"), n) && !q(g[a], n) && (g[a] = [])
      }
    }

    function n(a) {
      return a.call ? a() : e[a]
    }
    a = a[k] ? a : [a];
    var i = b && b.call,
      j = i ? b : d,
      l = i ? a.join("") : b,
      m = a.length;
    c(function() {
      q(a, function(a) {
        h[a] ? (l && (f[l] = 1), o()) : (h[a] = 1, l && (f[l] = 1), t(s.path ? s.path + a + ".js" : a, o))
      })
    }, 0);
    return s
  };
  s.get = t, s.ready = function(a, b, c) {
    a = a[k] ? a : [a];
    var d = [];
    !q(a, function(a) {
      e[a] || d[k](a)
    }) && p(a, function(a) {
      return e[a]
    }) ? b() : ! function(a) {
      g[a] = g[a] || [], g[a][k](b), c && c(d)
    }(a.join("|"));
    return s
  };
  var u = a.$script;
  s.noConflict = function() {
    a.$script = u;
    return this
  }, typeof module != "undefined" && module.exports ? module.exports = s : a.$script = s
}(this, document, setTimeout)
// load all of the dependencies asynchronously.
$script([
  "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"
], 'angular-bundle');

$script.ready('angular-bundle', function() {
  $script([
    "https://rawgit.com/natos/angular-switchery/master/dist/angular-switchery.min.js",
    "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular-route.min.js"
  ], 'angular-switchery');
});

$script.ready('angular-switchery', function() {

  angular.module('switcher.examples', [
      // 'ngModel',
      'ngRoute',
      'angular.switchery'
    ])
    .config(['$routeProvider', function($routeProvider) {
      $routeProvider
        .when('/', {
          templateUrl: 'example.html',
          controller: 'ExamplesController'
        })
        .otherwise({
          redirectTo: '/'
        });
    }])
    .controller('ExamplesController', ['$scope',
      function($scope) {
        console.log('$scope', $scope);
      }
    ]);
  // when all is done, execute bootstrap angular application
  angular.bootstrap(document, ['switcher.examples']);
});
<div ng-view></div>
<script type="text/ng-template" id="example.html">
<header>
    <h1>Angular-switchery</h1>
    <p><a href="https://github.com/natos/angular-switchery">Github</a> | <a href="http://www.natansantolo.com">Natan Santolo</a></p>
</header>
<div class="example">
  <p><label>ngModel First <input type="checkbox" ng-model="first"></label></p>
  <pre><code>&lt;input type="checkbox" ng-switchery="{ size: 'small', color: '#ff0000', secondaryColor: '#eeeeee' }" ng-model="first" /&gt;</code></pre>
  <input type="checkbox" ng-switchery="{ size: 'small', color: '#ff0000', secondaryColor: '#eeeeee' }" ng-model="first" />
  <pre><code>&lt;input type="checkbox" ng-switchery="{ size: 'normal', color: '#ff0000', secondaryColor: '#eeeeee' }" ng-model="first" /&gt;</code></pre>
  <input type="checkbox" ng-switchery="{ size: 'normal', color: '#ff0000', secondaryColor: '#eeeeee' }" ng-model="first" />
  <pre><code>&lt;input type="checkbox" ng-switchery="{ size: 'large', color: '#ff0000', secondaryColor: '#eeeeee' }" ng-model="first" /&gt;</code></pre>
  <input type="checkbox" ng-switchery="{ size: 'large', color: '#ff0000', secondaryColor: '#eeeeee' }" ng-model="first" />
</div>
<div class="example">
  <p><label>ngModel Second <input type="checkbox" ng-model="second" ng-init="second=true"></label></p>
  <pre><code>&lt;input type="checkbox" ng-switchery="{ size: 'small', color: '#00ff00', secondaryColor: '#eeeeee' }" ng-model="second" /&gt;</code></pre>
  <input type="checkbox" ng-switchery="{ size: 'small', color: '#00ff00', secondaryColor: '#eeeeee' }" ng-model="second" />
  <pre><code>&lt;input type="checkbox" ng-switchery="{ size: 'normal', color: '#00ff00', secondaryColor: '#eeeeee' }" ng-model="second" /&gt;</code></pre>
  <input type="checkbox" ng-switchery="{ size: 'normal', color: '#00ff00', secondaryColor: '#eeeeee' }" ng-model="second" />
  <pre><code>&lt;input type="checkbox" ng-switchery="{ size: 'large', color: '#00ff00', secondaryColor: '#eeeeee' }" ng-model="second" /&gt;</code></pre>
  <input type="checkbox" ng-switchery="{ size: 'large', color: '#00ff00', secondaryColor: '#eeeeee' }" ng-model="second" />
</div>
<p><a href="http://abpetkov.github.io/switchery/">Read more to learn all the posible customizations</a></p>
</script>
.switchery {
  background-color: #fff;
  border: 1px solid #dfdfdf;
  border-radius: 20px;
  cursor: pointer;
  display: inline-block;
  height: 30px;
  position: relative;
  vertical-align: middle;
  width: 50px;
  -moz-user-select: none;
  -khtml-user-select: none;
  -webkit-user-select: none;
  -ms-user-select: none;
  user-select: none;
  box-sizing: content-box;
  background-clip: content-box
}

.switchery>small {
  background: #fff;
  border-radius: 100%;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .4);
  height: 30px;
  position: absolute;
  top: 0;
  width: 30px
}

.switchery-small {
  border-radius: 20px;
  height: 20px;
  width: 33px
}

.switchery-small>small {
  height: 20px;
  width: 20px
}

.switchery-large {
  border-radius: 40px;
  height: 40px;
  width: 66px
}

.switchery-large>small {
  height: 40px;
  width: 40px
}


/*
 * What follows is the result of much research on cross-browser styling.
 * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
 * Kroc Camen, and the H5BP dev community and team.
 */


/* ==========================================================================
   Base styles: opinionated defaults
   ========================================================================== */

html {
  color: #222;
  font-size: 1em;
  line-height: 1.4;
}


/*
 * Remove text-shadow in selection highlight:
 * https://twitter.com/miketaylr/status/12228805301
 *
 * These selection rule sets have to be separate.
 * Customize the background color to match your design.
 */

::selection {
  background: #b3d4fc;
  text-shadow: none;
}


/*
 * A better looking default horizontal rule
 */

hr {
  display: block;
  height: 1px;
  border: 0;
  border-top: 1px solid #ccc;
  margin: 1em 0;
  padding: 0;
}


/*
 * Remove the gap between audio, canvas, iframes,
 * images, videos and the bottom of their containers:
 * https://github.com/h5bp/html5-boilerplate/issues/440
 */

audio,
canvas,
iframe,
img,
svg,
video {
  vertical-align: middle;
}


/*
 * Remove default fieldset styles.
 */

fieldset {
  border: 0;
  margin: 0;
  padding: 0;
}


/*
 * Allow only vertical resizing of textareas.
 */

textarea {
  resize: vertical;
}


/* ==========================================================================
   Browser Upgrade Prompt
   ========================================================================== */

.browserupgrade {
  margin: 0.2em 0;
  background: #ccc;
  color: #000;
  padding: 0.2em 0;
}


/* ==========================================================================
   Author's custom styles
   ========================================================================== */

[ng-cloak] {
  display: none;
}

body {
  font-family: 'Roboto', sans-serif;
  padding: 2em;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: 'Slabo 27px', serif;
}

.example {
  padding: 1em 0;
}


/* ==========================================================================
   Helper classes
   ========================================================================== */


/*
 * Hide visually and from screen readers
 */

.hidden {
  display: none !important;
}


/*
 * Hide only visually, but have it available for screen readers:
 * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 */

.visuallyhidden {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
}


/*
 * Extends the .visuallyhidden class to allow the element
 * to be focusable when navigated to via the keyboard:
 * https://www.drupal.org/node/897638
 */

.visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus {
  clip: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  position: static;
  width: auto;
}


/*
 * Hide visually and from screen readers, but maintain layout
 */

.invisible {
  visibility: hidden;
}


/*
 * Clearfix: contain floats
 *
 * For modern browsers
 * 1. The space content is one way to avoid an Opera bug when the
 *    `contenteditable` attribute is included anywhere else in the document.
 *    Otherwise it causes space to appear at the top and bottom of elements
 *    that receive the `clearfix` class.
 * 2. The use of `table` rather than `block` is only necessary if using
 *    `:before` to contain the top-margins of child elements.
 */

.clearfix:before,
.clearfix:after {
  content: " ";
  /* 1 */
  display: table;
  /* 2 */
}

.clearfix:after {
  clear: both;
}


/* ==========================================================================
   EXAMPLE Media Queries for Responsive Design.
   These examples override the primary ('mobile first') styles.
   Modify as content requires.
   ========================================================================== */

@media only screen and (min-width: 35em) {
  /* Style adjustments for viewports that meet the condition */
}

@media print,
(min-resolution: 1.25dppx),
(min-resolution: 120dpi) {
  /* Style adjustments for high resolution devices */
}


/* ==========================================================================
   Print styles.
   Inlined to avoid the additional HTTP request:
   http://www.phpied.com/delay-loading-your-print-css/
   ========================================================================== */

@media print {
  *,
  *:before,
  *:after,
  *:first-letter,
  *:first-line {
    background: transparent !important;
    color: #000 !important;
    /* Black prints faster:
                                   http://www.sanbeiji.com/archives/953 */
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  /*
     * Don't show links that are fragment identifiers,
     * or use the `javascript:` pseudo protocol
     */
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  /*
     * Printing Tables:
     * http://css-discuss.incutio.com/wiki/Printing_Tables
     */
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
}