| <!doctype html> |
| <html lang="en" ng-app="docsApp" ng-controller="DocsController"> |
| <head> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta charset="utf-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| <meta name="Description" |
| content="AngularJS is what HTML would have been, had it been designed for building web-apps. |
| Declarative templates with data-binding, MVC, dependency injection and great |
| testability story all implemented with pure client-side JavaScript!"> |
| <meta name="fragment" content="!"> |
| <title ng-bind-template="AngularJS: {{ currentArea.name }}: {{ currentPage.name || 'Error: Page not found'}}">AngularJS</title> |
| |
| <script type="text/javascript"> |
| // dynamically add base tag as well as css and javascript files. |
| // we can't add css/js the usual way, because some browsers (FF) eagerly prefetch resources |
| // before the base attribute is added, causing 404 and terribly slow loading of the docs app. |
| (function() { |
| var indexFile = (location.pathname.match(/\/(index[^\.]*\.html)/) || ['', ''])[1], |
| rUrl = /(#!\/|api|guide|misc|tutorial|error|index[^\.]*\.html).*$/, |
| baseUrl = location.href.replace(rUrl, indexFile), |
| production = location.hostname === 'docs.angularjs.org', |
| headEl = document.getElementsByTagName('head')[0], |
| sync = true; |
| |
| addTag('base', {href: baseUrl}); |
| |
| |
| addTag('link', {rel: 'stylesheet', href: 'components/bootstrap-3.1.1/css/bootstrap.min.css', type: 'text/css'}); |
| addTag('link', {rel: 'stylesheet', href: 'components/open-sans-fontface-1.0.4/open-sans.css', type: 'text/css'}); |
| addTag('link', {rel: 'stylesheet', href: 'css/prettify-theme.css', type: 'text/css'}); |
| addTag('link', {rel: 'stylesheet', href: 'css/docs.css', type: 'text/css'}); |
| addTag('link', {rel: 'stylesheet', href: 'css/animations.css', type: 'text/css'}); |
| |
| |
| addTag('script', {src: '../angular.min.js' }, sync); |
| addTag('script', {src: '../angular-resource.min.js' }, sync); |
| addTag('script', {src: '../angular-route.min.js' }, sync); |
| addTag('script', {src: '../angular-cookies.min.js' }, sync); |
| addTag('script', {src: '../angular-sanitize.min.js' }, sync); |
| addTag('script', {src: '../angular-touch.min.js' }, sync); |
| addTag('script', {src: '../angular-animate.min.js' }, sync); |
| addTag('script', {src: 'components/marked-0.3.1/lib/marked.js' }, sync); |
| addTag('script', {src: 'js/angular-bootstrap/bootstrap.js' }, sync); |
| addTag('script', {src: 'js/angular-bootstrap/bootstrap-prettify.js' }, sync); |
| addTag('script', {src: 'js/angular-bootstrap/dropdown-toggle.js' }, sync); |
| addTag('script', {src: 'components/lunr.js-0.4.2/lunr.min.js' }, sync); |
| addTag('script', {src: 'components/google-code-prettify-1.0.1/src/prettify.js' }, sync); |
| addTag('script', {src: 'components/google-code-prettify-1.0.1/src/lang-css.js' }, sync); |
| addTag('script', {src: 'js/versions-data.js' }, sync); |
| addTag('script', {src: 'js/pages-data.js' }, sync); |
| addTag('script', {src: 'js/docs.js' }, sync); |
| |
| |
| function addTag(name, attributes, sync) { |
| var el = document.createElement(name), |
| attrName; |
| |
| for (attrName in attributes) { |
| el.setAttribute(attrName, attributes[attrName]); |
| } |
| |
| sync ? document.write(outerHTML(el)) : headEl.appendChild(el); |
| } |
| |
| function outerHTML(node){ |
| // if IE, Chrome take the internal method otherwise build one |
| return node.outerHTML || ( |
| function(n){ |
| var div = document.createElement('div'), h; |
| div.appendChild(n); |
| h = div.innerHTML; |
| div = null; |
| return h; |
| })(node); |
| } |
| })(); |
| |
| |
| // force page reload when new update is available |
| window.applicationCache && window.applicationCache.addEventListener('updateready', function(e) { |
| if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { |
| window.applicationCache.swapCache(); |
| window.location.reload(); |
| } |
| }, false); |
| |
| // GA asynchronous tracker |
| var _gaq = _gaq || []; |
| _gaq.push(['_setAccount', 'UA-8594346-3']); |
| _gaq.push(['_setDomainName', '.angularjs.org']); |
| |
| (function() { |
| var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
| ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
| var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
| })(); |
| </script> |
| </head> |
| <body> |
| <div id="wrapper"> |
| <header class="header header-fixed"> |
| <section class="navbar navbar-inverse docs-navbar-primary" ng-controller="DocsSearchCtrl"> |
| <div class="container"> |
| <div class="row"> |
| <div class="col-md-9 header-branding"> |
| <a class="brand navbar-brand" href="http://angularjs.org"> |
| <img class="logo" src="img/angularjs-for-header-only.svg"> |
| </a> |
| <ul class="nav navbar-nav"> |
| <li class="divider-vertical"></li> |
| <li><a href="http://angularjs.org"><i class="icon-home icon-white"></i> Home</a></li> |
| <li class="divider-vertical"></li> |
| <li class="dropdown"> |
| <a href="#" class="dropdown-toggle" data-toggle="dropdown"> |
| <i class="icon-eye-open icon-white"></i> Learn <b class="caret"></b> |
| </a> |
| <ul class="dropdown-menu"> |
| <li class="disabled"><a href="http://angularjs.org/">Why AngularJS?</a></li> |
| <li><a href="http://www.youtube.com/user/angularjs">Watch</a></li> |
| <li><a href="tutorial">Tutorial</a></li> |
| <li><a href="http://builtwith.angularjs.org/">Case Studies</a></li> |
| <li><a href="https://github.com/angular/angular-seed">Seed App project template</a></li> |
| <li><a href="misc/faq">FAQ</a></li> |
| </ul> |
| </li> |
| <li class="divider-vertical"></li> |
| <li class="dropdown active"> |
| <a href="#" class="dropdown-toggle" data-toggle="dropdown"> |
| <i class="icon-book icon-white"></i> Develop <b class="caret"></b> |
| </a> |
| <ul class="dropdown-menu"> |
| <li><a href="tutorial">Tutorial</a></li> |
| <li><a href="guide">Developer Guide</a></li> |
| <li><a href="api">API Reference</a></li> |
| <li><a href="error">Error Reference</a></li> |
| <li><a href="misc/contribute">Contribute</a></li> |
| <li><a href="http://code.angularjs.org/">Download</a></li> |
| </ul> |
| </li> |
| <li class="divider-vertical"></li> |
| <li class="dropdown"> |
| <a href="#" class="dropdown-toggle" data-toggle="dropdown"> |
| <i class="icon-comment icon-white"></i> Discuss <b class="caret"></b> |
| </a> |
| <ul class="dropdown-menu"> |
| <li><a href="http://blog.angularjs.org">Blog</a></li> |
| <li><a href="http://groups.google.com/group/angular">Mailing List</a></li> |
| <li><a href="http://webchat.freenode.net/?channels=angularjs&uio=d4">Chat Room</a></li> |
| <li class="divider"></li> |
| <li><a href="https://twitter.com/#!/angularjs">Twitter</a></li> |
| <li><a href="https://plus.google.com/110323587230527980117">Google+</a></li> |
| <li class="divider"></li> |
| <li><a href="https://github.com/angular/angular.js">GitHub</a></li> |
| <li><a href="https://github.com/angular/angular.js/issues">Issue Tracker</a></li> |
| </ul> |
| </li> |
| <li class="divider-vertical"></li> |
| </ul> |
| </div> |
| <form ng-class="{focus:focus}" class="navbar-search col-md-3 docs-search" ng-submit="submit()"> |
| <span class="glyphicon glyphicon-search search-icon"></span> |
| <input type="text" |
| name="as_q" |
| class="search-query" |
| placeholder="Click or press / to search" |
| ng-focus="focus=true" |
| ng-blur="focus=false" |
| ng-change="search(q)" |
| ng-model="q" |
| docs-search-input |
| autocomplete="off" /> |
| </form> |
| </div> |
| </div> |
| <div class="search-results-container" ng-show="hasResults"> |
| <div class="container"> |
| <a href="" ng-click="hideResults()" class="search-close"> |
| <span class="glyphicon glyphicon-remove search-close-icon"></span> Close |
| </a> |
| <div class="search-results-frame"> |
| <div ng-repeat="(key, value) in results" class="search-results-group" ng-class="colClassName + ' col-group-' + key"> |
| <h4 class="search-results-group-heading">{{ key }}</h4> |
| <div class="search-results"> |
| <div ng-repeat="item in value" class="search-result"> |
| - <a ng-click="hideResults()" ng-href="{{ item.path }}">{{ item.name }}</a> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
| <section class="sup-header"> |
| <div class="container main-grid main-header-grid"> |
| <div class="grid-left"> |
| <div ng-controller="DocsVersionsCtrl" class="picker version-picker"> |
| <select ng-options="v as ('v' + v.version + (v.isSnapshot ? ' (snapshot)' : '')) group by (v.isStable?'Stable':'Unstable') for v in docs_versions" |
| ng-model="docs_version" |
| ng-change="jumpToDocsVersion(docs_version)" |
| class="docs-version-jump"> |
| </select> |
| </div> |
| </div> |
| <div class="grid-right"> |
| <ul class="nav-breadcrumb"> |
| <li ng-repeat="crumb in breadcrumb" class="nav-breadcrumb-entry naked-list"> |
| <span class="divider"> /</span> |
| <a ng-href="{{crumb.url}}">{{crumb.name}}</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </section> |
| </header> |
| |
| <section role="main" class="container main-body"> |
| <div class="main-grid main-body-grid"> |
| <div class="grid-left"> |
| <a class="btn toc-toggle visible-xs" ng-click="toc=!toc">Show / Hide Table of Contents</a> |
| <div class="side-navigation" ng-show="toc==true"> |
| <ul class="nav-list naked-list"> |
| <li ng-repeat="navGroup in currentArea.navGroups track by navGroup.name" class="nav-index-group"> |
| <a href="{{ navGroup.href }}" ng-class="navClass(navGroup)" class="nav-index-group-heading">{{ navGroup.name }}</a> |
| <ul class="aside-nav"> |
| <li ng-repeat="navItem in navGroup.navItems" ng-class="navClass(navItem)" class="nav-index-listing"> |
| <a ng-if="navItem.extra.href" ng-class="navClass(navItem.extra)" href="{{navItem.extra.href}}"> |
| {{navItem.extra.text}}<i ng-if="navItem.extra.icon" class="icon-{{navItem.extra.icon}}"></i> |
| </a> |
| <a tabindex="2" ng-class="linkClass(navItem)" href="{{navItem.href}}">{{navItem.name}}</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <a href="" ng-click="toc=false" class="toc-close visible-xs"> |
| <span class="glyphicon glyphicon-remove toc-close-icon"></span> Close |
| </a> |
| </div> |
| </div> |
| <div class="grid-right"> |
| <div id="loading" ng-show="loading">Loading...</div> |
| <div ng-hide="loading" ng-include="currentPage.outputPath || 'Error404.html'" onload="afterPartialLoaded()" autoscroll></div> |
| </div> |
| </div> |
| </section> |
| |
| <footer class="footer"> |
| <div class="container"> |
| <p class="pull-right"><a back-to-top>Back to top</a></p> |
| |
| <p> |
| Super-powered by Google ©2010-2014 |
| ( <a id="version" |
| ng-href="https://github.com/angular/angular.js/blob/master/CHANGELOG.md#{{versionNumber}}" |
| ng-bind-template="v{{version}}"> |
| </a> |
| ) |
| </p> |
| <p> |
| Code licensed under the |
| <a href="https://github.com/angular/angular.js/blob/master/LICENSE" target="_blank">The |
| MIT License</a>. Documentation licensed under <a |
| href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>. |
| </p> |
| </div> |
| </footer> |
| </div> |
| </body> |
| </html> |