From 328bcd50f44b5ba4c260281a6438a2566c02400f Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Sat, 12 May 2012 10:59:12 -0400 Subject: [PATCH 01/14] fix(favicon): update to aliased icon --- lib/nodeserver/favicon.ico | Bin 894 -> 1150 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/nodeserver/favicon.ico b/lib/nodeserver/favicon.ico index 93d08c153549cd375799c4fd6149439d10c9ae91..fe24a63a6ba4c4b4fb0e960abb60e51dc9097d43 100644 GIT binary patch literal 1150 zcmZuxZAep57(QaqUkSemBP}6IGixM-R$2;?eQEiH)}M%sFz|;4MNX|WiYN&)b(!;H z6Y*nt*TibqTMgRG)HS!ek&a*=1h9&ehx^|5d7kq==bVdB5WYh~ z5Pn9Zl1&JOBZT5`;1tgM&*K3h{B8XO04Pv69FAiQqf%+L-x}R+cT}L7K)Hp5g#({H zs)ujg7~xW4RgiVK6Q0-0+&Z1^>C)0tWFQR5EiNv`j*gB=t1D>k=&rAj6sm=NVV@x` zw2hCPj4lwp82qEx>mRPHtc3aV7>%aNIw8HBkub*N2zEW5@azt2gMusxh+8R_*=)Y< z8=bRvJutLfX4G3b|p{YRzFR?!H&x@}p?E$;po?|kZ?qnve^}WB- z4mRsN9Ew)M*>nl7U3gmR!xE0m1>G<`JzX|FKGB*SHR01IKAcZw@!XtnuR;$E^#jn_ zB7;5QtJ(ygeY^|so_h9fSglM7om_(_976-Yz&vAx!9fa&&aBlY_#=rOpwVb3X$NB# zL~g_vWg3C__e!);o8Sd8VxX1ul+kDuzL7I*^-Y>1J_;gMx#WE_a1pONsV9-NO$>#n zBv32t<%SgRXIPfK>)nHR-y~wL8ac%ns>*5ZLYf+~Q@=oRY&%@ak;0?ke8-gJM3=FBlWus^`1V(HK L{Qu9uKnVr_{Vxw% From 15df7fbdc66aee5bea729c73b4283bcc7f1223de Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Tue, 22 May 2012 22:22:14 -0700 Subject: [PATCH 02/14] chore(docs): correct spacings --- docs/src/templates/js/docs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/templates/js/docs.js b/docs/src/templates/js/docs.js index af23e2adf783..60a8796f7961 100644 --- a/docs/src/templates/js/docs.js +++ b/docs/src/templates/js/docs.js @@ -86,6 +86,7 @@ docsApp.directive.docTutorialNav = function(templateMerge) { }; }; + docsApp.directive.docTutorialReset = function() { function tab(name, command, id, step) { return '' + @@ -188,7 +189,6 @@ docsApp.serviceFactory.openJsFiddle = function(templateMerge, getEmbeddedTemplat }; - docsApp.serviceFactory.sections = function sections() { var sections = { guide: [], From bccc73fdeefc652ddde08fa3744ab062272024c3 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Tue, 22 May 2012 22:22:37 -0700 Subject: [PATCH 03/14] chore(docs): remove unused doc_widget.js file --- docs/src/templates/js/doc_widgets.js | 313 --------------------------- 1 file changed, 313 deletions(-) delete mode 100644 docs/src/templates/js/doc_widgets.js diff --git a/docs/src/templates/js/doc_widgets.js b/docs/src/templates/js/doc_widgets.js deleted file mode 100644 index bf49697d31e0..000000000000 --- a/docs/src/templates/js/doc_widgets.js +++ /dev/null @@ -1,313 +0,0 @@ -angular.module('ngdocs.directives', [], function($compileProvider) { - - var angularJsUrl; - var scripts = document.getElementsByTagName("script"); - var angularJsRegex = /^(|.*\/)angular(-\d.*?)?(\.min)?.js(\?[^#]*)?(#(.*))?$/; - for(var j = 0; j < scripts.length; j++) { - var src = scripts[j].src; - if (src && src.match(angularJsRegex)) { - angularJsUrl = src.replace(/docs(-next)?\.angularjs\.org/, 'code.angularjs.org'); - continue; - } - } - - - var HTML_TEMPLATE = - '\n' + - '\n' + - ' \n' + - '_SCRIPT_SOURCE_' + - ' \n' + - '_HTML_SOURCE_\n' + - ' \n' + - ''; - - $compileProvider.directive('docExample', ['$injector', '$log', '$browser', '$location', - function($injector, $log, $browser, $location) { - return { - restrict: 'E', - terminal: true, - compile: function(element, attrs) { - var module = attrs.module; - - //jQuery find() methods in this widget contain primitive selectors on purpose so that we can use - //jqlite instead. jqlite's find() method currently supports onlt getElementsByTagName! - var example = element.find('pre').eq(0), //doc-source - scriptSrc = '', - htmlSrc = example.text().replace(/([\s\S]+)<\/script>/im, function(_, type, script) { - scriptSrc = script; - return ''; - }), - showSource = example.attr('source') !== 'false', - jsfiddle = example.attr('jsfiddle') || true, - scenario = element.find('pre').eq(1); //doc-scenario - - var tabs = angular.element('
    '); - - // show source tab, if not disabled - if (showSource) { - tabs.append( - '
  • Source

  • ' + - '
  • ' + - jsFiddleButton(jsfiddle) + // may or may not have value - '
  • '); - } - // show live preview tab - var livePreviewTab; - tabs.append('
  • Live Preview

  • '); - tabs.append(livePreviewTab = angular.element('
  • ' + htmlSrc +'
  • ')); - // show scenario tab, if present - if (scenario.text()) { - tabs.append( - '
  • Scenario Test

  • ' + - '
  • ' + scenario.text() + '
  • '); - } - - tabs.find('li').eq(1).find('pre').text( - HTML_TEMPLATE. - replace('_SCRIPT_SOURCE_', scriptSrc ? ' \n' : ''). - replace('_HTML_SOURCE_', indent(htmlSrc, ' ')). - replace('_MODULE_', module ? '="' + module + '"' : '')); - - element.html(''); - element.append(tabs); - - try { - if (window.execScript) { // IE - window.execScript(scriptSrc || '"stupid IE!"'); // IE complains when evaling empty string - } else { - window.eval(scriptSrc); - } - } catch (e) { - alert(e); - } - - return function(docsAppScope) { - var modules = [ - function($provide) { - $provide.value('$browser', $browser); - $provide.provider('$location', function() { - this.$get = function() { - return $location; - }; - this.hashPrefix = this.html5Mode = angular.noop; - }); - $provide.decorator('$defer', function($rootScope, $delegate) { - return angular.extend(function(fn, delay) { - if (delay && delay > 500) { - return setTimeout(function() { - $rootScope.$apply(fn); - }, delay); - } else { - return $delegate.apply(this, arguments); - } - }, $delegate); - }); - } - ]; - module && modules.push(module); - - angular.bootstrap(livePreviewTab, modules). - invoke(['$rootScope', function(example$rootScope) { - element.bind('$destroy', docsAppScope.$root.$watch(function() { - // this propagates the $watch from the docs app to the example app - example$rootScope.$digest(); - })); - }]); - }; - - function jsFiddleButton(jsfiddle) { - var fixJsFiddleIssue132 = true; - if (jsfiddle !== 'false') { - if(jsfiddle === true) { - //dynamically generate a fiddle - var fiddleUrl = 'http://jsfiddle.net/api/post/library/pure/'; - - function jsFiddleEscape(text, prefix) { - return indent(text.replace(/<\/textarea>/gi,'</textarea>'), prefix); - } - - return '
    ' + - (fixJsFiddleIssue132 ? '' : '') + - '' + - '' + - '' + - '' + - '' + - '
    '; - } else { - //use existing fiddle - fiddleUrl = "http://jsfiddle.net" + jsfiddle; - return '
    ' + - '' + - '
    '; - } - } else { - return ''; - } - }; - } - } - }]); - - function indent(text, prefix) { - prefix = prefix || ''; - if (!text) return text; - var lines = text.split(/\r?\n/); - var i; - - // remove any leading blank lines - while (lines[0].match(/^\s*$/)) lines.shift(); - // remove any trailing blank lines - while (lines[lines.length - 1].match(/^\s*$/)) lines.pop(); - var minIndent = 999; - for (i = 0; i < lines.length; i++) { - var line = lines[0]; - var indent = line.match(/^\s*/)[0]; - if (indent !== line && indent.length < minIndent) { - minIndent = indent.length; - } - } - - for (i = 0; i < lines.length; i++) { - lines[i] = prefix + lines[i].substring(minIndent); - } - return lines.join('\n'); - } - - $compileProvider.directive('docTutorialInstructions', function() { - var HTML_NAV = '
  • {title}
  • '; - var HTML_CONTENT = '
    {content}
    '; - - var HTML_TPL = - '

    Workspace Reset Instructions  ➤

    ' + - '
    ' + - '
    ' + - '
      ' + - '
    ' + - '
    ' + - '
    ' + - - '
    ' + - '
    '; - - var DEFAULT_NAV = - '
  • Git on Mac/Linux
  • ' + - '
  • Git on Windows
  • ' + - '
  • Snapshots on Mac/Linux
  • ' + - '
  • Snapshots on Windows
  • '; - - var DEFAULT_CONTENT = - '
    ' + - '
      ' + - '
    1. Reset the workspace to step {step}.

      ' + - '
       git checkout -f step-{step}
    2. ' + - '
    3. Refresh your browser or check the app out on angular\'s server.

    4. ' + - '
    ' + - '
    ' + - - '
    ' + - '
      ' + - '
    1. Reset the workspace to step {step}.

      ' + - '
       git checkout -f step-{step}
    2. ' + - '
    3. Refresh your browser or check the app out on angular\'s server.

    4. ' + - '
    ' + - '
    ' + - - '
    ' + - '
      ' + - '
    1. Reset the workspace to step {step}.

      ' + - '
       ./goto_step.sh {step}
    2. ' + - '
    3. Refresh your browser or check the app out on angular\'s server.

    4. ' + - '
    ' + - '
    ' + - - '
    ' + - '
      ' + - '
    1. Reset the workspace to step {step}.

      ' + - '
       ./goto_step.bat {step}
    2. ' + - '
    3. Refresh your browser or check the app out on angular\'s server.

    4. ' + - '
    ' + - '
    '; - - return { - restrict: 'EA', - compile: function(element, attrs) { - var tabs = angular.element(HTML_TPL.replace('{show}', attrs.show || 'false')), - nav = tabs.find('ul'), - // use simple selectors because jqLite find() supports getElementsByTagName only - content = tabs.find('div').find('div'), - children = element.children(); - - if (children.length) { - // load custom content - angular.forEach(element.children(), function(elm) { - elm = angular.element(elm); - var id = elm.attr('id'); - - nav.append(HTML_NAV.replace('{title}', elm.attr('title')).replace(/\{id\}/g, id)); - content.append(HTML_CONTENT.replace('{id}', id).replace('{content}', elm.html())); - }); - } else { - // default - nav.append(DEFAULT_NAV); - content.append(DEFAULT_CONTENT.replace(/\{step\}/g, element.attr('step'))); - } - - element.html(''); - element.append(tabs); - } - } - }); - - - $compileProvider.directive('docTutorialNav', function() { - return { - restrict: 'EA', - link:function(scope, element, attrs) { - var prevStep, codeDiff, nextStep, - content, step = attrs.docTutorialNav; - - step = parseInt(step, 10); - - if (step === 0) { - prevStep = ''; - nextStep = 'step_01'; - codeDiff = 'step-0~7...step-0'; - } else if (step === 11){ - prevStep = 'step_10'; - nextStep = 'the_end'; - codeDiff = 'step-10...step-11'; - } else { - prevStep = 'step_' + pad(step - 1); - nextStep = 'step_' + pad(step + 1); - codeDiff = 'step-' + (step-1) + '...step-' + step; - } - - content = angular.element( - '
  • Previous
  • ' + - '
  • Live Demo
  • ' + - '
  • Code Diff
  • ' + - '
  • Next
  • ' - ); - - element.attr('id', 'tutorial-nav'); - element.append(content); - } - }; - - function pad(step) { - return (step < 10) ? ('0' + step) : step; - } - }); -}); From 2121e0793c7a8e58e72d51446fa105df5591344e Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Thu, 17 May 2012 10:33:19 -0700 Subject: [PATCH 04/14] chore(docs): remove generated file --- docs/src/templates/js/docs-keywords.js | 212 ------------------------- 1 file changed, 212 deletions(-) delete mode 100644 docs/src/templates/js/docs-keywords.js diff --git a/docs/src/templates/js/docs-keywords.js b/docs/src/templates/js/docs-keywords.js deleted file mode 100644 index dfc696af4291..000000000000 --- a/docs/src/templates/js/docs-keywords.js +++ /dev/null @@ -1,212 +0,0 @@ -NG_PAGES=[ -{"section":"api","id":"index","name":"API Reference","shortName":"API Reference","type":"overview","keywords":"about angularjs api are check concepts developer documentation feature for guide information more need new out overview recomend reference refference specific the tutorial use when you"}, -{"section":"api","id":"angular.bind","shortName":"bind","type":"function","keywords":"all also angular api are args arguments becomes bind bindings bound call calls can context currying evaluated feature for function known optional org prebound returns self should specified supply that the this which wikipedia with wraps you"}, -{"section":"api","id":"angular.bootstrap","shortName":"bootstrap","type":"function","keywords":"$injector angular api app application array auto bootstrap created declarations dom element for function guide injector manual_bootstrap manually module modules newly returns root see start the this use which"}, -{"section":"api","id":"angular.copy","shortName":"copy","type":"function","keywords":"$filter about all and angular any api are array arrays augment can copied copy created creates deep deleted destination elements expressions for from function including information into its make module more must not note null object objects primitives properties provided returned same see should source specified supplied that the then this type undefined updated used was which will"}, -{"section":"api","id":"angular.element","shortName":"element","type":"function","keywords":"$rootscope above additional addtion alias all allows always and angular api api-compatible are arguments associated available before both but camelcase can com commonly controller current data default directive dom domcontentloaded domelement either element event fired following footprint for found function functionality html implementation implements inheriteddata injector into invocation its jqlite jquery limited lite loaded lookups manipulate method methods module most name needed never ngcontroller ngmodel note object only over parent precedence privides provided provides raw reached real references referred retrieved retrieves same scope small string styles subset supported tag takes that the then they this tiny top until value very walks was will with within wrapped wraps"}, -{"section":"api","id":"angular.equals","shortName":"equals","type":"function","keywords":"all and angular api are arguments arrays begin being both but compare compared comparision comparison consider considered determines domwindow during equal equals equivalent false following function identify ignored javasscript least names nan object objects one only pass properties property same scope supports that the their true two type types value values with"}, -{"section":"api","id":"angular.extend","shortName":"extend","type":"function","keywords":"all angular api can copying destination dst extend extends from function multiple object objects properties source specify src the you"}, -{"section":"api","id":"angular.forEach","shortName":"forEach","type":"function","keywords":"and angular api array become can collection context each either element expect for foreach function gender index invoked invokes item iterate iterator key known log male misko name note obj object once optional over previously property push reference specifying the this toequal value values var was where which with"}, -{"section":"api","id":"angular.fromJson","shortName":"fromJson","type":"function","keywords":"angular api deserialize deserialized deserializes fromjson function json string thingy"}, -{"section":"api","id":"angular.identity","shortName":"identity","type":"function","keywords":"angular api argument code first function functional identity its return returns style that the this transformer useful value when writing"}, -{"section":"api","id":"angular.injector","shortName":"injector","type":"function","keywords":"$compile $digest $document $injector $rootscope added aliases angular api application arguments auto can create creates dependency explicitly for function functions guide implicit inference inject injection injector invoke kick list module modules must retrieving see services that the their type typical usage use used var well your"}, -{"section":"api","id":"angular.isArray","shortName":"isArray","type":"function","keywords":"angular api array check determines function isarray reference true value"}, -{"section":"api","id":"angular.isDate","shortName":"isDate","type":"function","keywords":"angular api check date determines function isdate reference true value"}, -{"section":"api","id":"angular.isDefined","shortName":"isDefined","type":"function","keywords":"angular api check defined determines function isdefined reference true value"}, -{"section":"api","id":"angular.isElement","shortName":"isElement","type":"function","keywords":"angular api check determines dom element function iselement jquery reference true value wrapped"}, -{"section":"api","id":"angular.isFunction","shortName":"isFunction","type":"function","keywords":"angular api check determines function isfunction reference true value"}, -{"section":"api","id":"angular.isNumber","shortName":"isNumber","type":"function","keywords":"angular api check determines function isnumber number reference true value"}, -{"section":"api","id":"angular.isObject","shortName":"isObject","type":"function","keywords":"angular api are but check considered determines function isobject javascript not null object objects reference true typeof unlike value"}, -{"section":"api","id":"angular.isString","shortName":"isString","type":"function","keywords":"angular api check determines function isstring reference string true value"}, -{"section":"api","id":"angular.isUndefined","shortName":"isUndefined","type":"function","keywords":"angular api check determines function isundefined reference true undefined value"}, -{"section":"api","id":"angular.lowercase","shortName":"lowercase","type":"function","keywords":"angular api converted converts function lowercase lowercased specified string the"}, -{"section":"api","id":"angular.mock","shortName":"mock","type":"overview","keywords":"angular angular-mocks api code contains from mock namespace overview related testing which"}, -{"section":"api","id":"angular.mock.debug","shortName":"debug","type":"function","keywords":"also angular any api argument available can common console debug debugging display elements etc for function globally injectable instance into just method mock not object objects serialized serializing string strings the this turn used useful where window"}, -{"section":"api","id":"angular.mock.inject","shortName":"inject","type":"function","keywords":"$injector $provide access aliases all also and angular any api app arguments auto available beforeeach can com creates default describe easy example expect fns for function functions github given here http inject injectable injected injector inside instance into jasmine like load loads looks method mock mode module modules myapp myapplicationmodule need new number only overridden override per provide published references resolving see should strings takes test tests that the then this toequal typical used using value version want what which will window with wraps you"}, -{"section":"api","id":"angular.mock.module","shortName":"module","type":"function","keywords":"access aliases also and angular anonymous any api are automatically available code collects com configuration configure created easy example fns for function functions github http information initialization inject injector jasmine loaded mock module modules ngmock number only published registers represented see string the this usage used when which will window with"}, -{"section":"api","id":"angular.mock.TzDate","shortName":"TzDate","type":"object","keywords":"angular api arg available best but called calls can class code complete constroctor create date date-like dependency depends desired errors fixed foo from getdate getfullyear gethours getminutes getmonth gettimezoneoffset globally has honored hours implemented incompatible incomplete inherit injectable instance instances intercept its just like list local machine main make matters methods might missing mock new newyearinbratislava non-standard not object offset only our prototype purpose representing result running safely settings since some specified stuff test that the this time timestamp timezone type tzdate unimplemented var via warning were where which will with without worse zone"}, -{"section":"api","id":"angular.noop","shortName":"noop","type":"function","keywords":"angular api calculateresult can code foo function functional noop operations performs result style that the this useful var when writing"}, -{"section":"api","id":"angular.toJson","shortName":"toJson","type":"function","keywords":"and angular api contain function input into json json-formatted jsonified newlines obj output pretty representing serialized serializes set string the tojson true whitespace will"}, -{"section":"api","id":"angular.uppercase","shortName":"uppercase","type":"function","keywords":"angular api converted converts function specified string the uppercase uppercased"}, -{"section":"api","id":"angular.version","shortName":"version","type":"property","keywords":"about angular angularjs api code codename contains current dot following full has information jiggling-armfat major minor name number object properties property release string such that the this version"}, -{"section":"api","id":"angular.Module","shortName":"Module","type":"interface","keywords":"$compileprovider $controllerprovider $filterprovider $provide after angular api application applied are auto because before config configfn configuration configuring constant construction controller creating creation current directive directivefactory directives execute factory filter filterfactory finished fixed for function get holds initialization initializationfn injector instance instantiated interface list load loaded loading method methods module modules must name names needs new object other performed property provide provider providerfunction providertype register requires run see service that the they this use useful value when which will with work"}, -{"section":"api","id":"angular.module","shortName":"module","type":"function","keywords":"$compileprovider $injector $locationprovider all and angular api application appname auto available being blocks bootstrap can collocation config configfn configuration configure core create created creating directive directives existing filters for function further global hashprefix however information initialization injector inside just like likely load mechanism module modules more must mycoolapp mymodule name new ngapp option party place process providers register registered registering requires retrieve retrieved same service services should simplify specified that the then this unspecified use used using value var with you your"}, -{"section":"api","id":"angular.module.AUTO","shortName":"AUTO","type":"overview","keywords":"$injector added angular api auto automatically each gets implicit module overview which"}, -{"section":"api","id":"angular.module.AUTO.$injector","shortName":"$injector","type":"object","keywords":"$inject $injector $provide adding all always and angular annotated annotating annotation annotations any api are argument arguments array auto before call calling can change code come consulted create defined definition dependency does equivalent expect explicit extracted first following for form from function get have holds inference inferred injection injector inline instance instances instantiate invoke invoked invokes item javascript last load locals method methods minfication minified module modules name names needed new not obfuscation object onto operator optional parameters parsed preset property provider read retrieve return returned returns self service servicea since specified supplies supply takes the then these this tobe tools tostring true type types used valid value var way ways where with work works"}, -{"section":"api","id":"angular.module.AUTO.$provide","shortName":"$provide","type":"object","keywords":"$delegate $get $getfn $injector $provide additional ahoj allow allows and angular api are arguments auto available beforeeach but called calls can class configuration configured configuring constant create created creation decorate decorated decoration decorator delegated delegates describe expect factories factory for fully function given greet greeter greetprovider hand have hello inject injectable injected injection injector instance instanciated instantiate instantiated intercept interceptable internally into invoke invoked key local may method methods module modules monkey name needs new not note object only original patched provider providers register registered registering required retrieved return returned salutation same service services share short should suffixed text that the them then therefore they this toequal treated under unlike use using value var when which will with would"}, -{"section":"api","id":"angular.module.ng","shortName":"ng","type":"overview","keywords":"all angular api contains core module overview services the which"}, -{"section":"api","id":"angular.module.ng.$anchorScroll","shortName":"$anchorScroll","type":"function","keywords":"$anchorscroll $anchorscrollprovider $location $rootscope $window according also anchor and angular any api called calling can changes checks current disableautoscrolling disabled element function hash html html5 http match module org related rules scroll spec specified the the-indicated-part-of-the-document this value watches when whenever"}, -{"section":"api","id":"angular.module.ng.$browser","shortName":"$browser","type":"object","keywords":"$browser $cookie $location $log abstract access add added addpollfn address adds all allow and angular anonymous any api apis application apps are argument arguments array asynchroniously away bar browser button callback called calling calls can cancel caused chaining change changed changes clicks cokkie convenient cookie cookies copy current defer defered deferid delay delete deletes depending different directly events executes execution features flush flushed fns follows for function functions gets getter global goals handy has hash hide history href html5 implementation inconsistencies instance instead intended interaction internal into its just least level link list listener location low meant method milliseconds mock mocked modify module monitor name new ngmock node not note now object one only onurlchange otherwise outside own parameter periodically please poll poller polling private programmatically provide provides pushstate queued real record refactor register registered replace return returns right same service set sets setter settimeout should specific started starts state supported syntax task test testing tests that the this two types undefined unlike url use used user using value values vary via was way when which who will window with without yet"}, -{"section":"api","id":"angular.module.ng.$cacheFactory","shortName":"$cacheFactory","type":"object","keywords":"$cachefactory all and angular api behavior cache cached cacheid capacity constructs created destroy factory following for from get info into key key-value lru methods miss module name new newly object objects options pair properties put puts references remove removeall removes returns set size specifies that the this turns undefined value values with"}, -{"section":"api","id":"angular.module.ng.$compile","shortName":"$compile","type":"function","keywords":"$compile $compileprovider $digest $eval $rootscope $scope $watch access after allowing and angular api apply appropriate are around asking assign attach attrs auto automatically available before bind bound but call called caller calling can case changes childnodes children clone cloneattachfn cloned clonedelement collects compilation compile compiler compiles compiling configure contents corresponding create creates ctrl current declare developer directive directives div document dom don done each effects either element elements enter example executes expect expression factory for from function functions get given guide hand have hello how html infinite information inject injects input instance into keep link linking loop lower many-times match maxpriority module name need new ng-controller ng-model ngrepeat not note once only original other ourselves passed passing piece place point priority process produce produces provided rather reference repeater results return returned returns right root scope section see send should single string template templatehtml text that the their them then there this tobe together transclude tree trying two typically until updated used var via view walking was watch ways when where which will with working works would you"}, -{"section":"api","id":"angular.module.ng.$compileProvider","shortName":"$compileProvider","type":"service","keywords":"$compileprovider angular api camel-case compiler directive directivefactory directives factroy for function guide info injectable match module more name register see service the which will with"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.form","shortName":"form","type":"directive","keywords":"$compileprovider $error $scope $valid action alias all allow allows and angular any api application applications apps are attribute because behaves browser browsers but button buttons called can child class classes classical click client-side coming controller css ctrl current data default desirable different directive directives dirty doesn double element elements empty enclosing enter error execution expect false field fields first following for form formcontroller forms from full function guest handle handler has hitting however html identical initialize input instantiates instead into invalid javascript logic means method model module more myform name nested nesting ng-controller ng-dirty ng-invalid ng-model ng-pristine ng-show ng-valid ngclick ngform ngsubmit not one only onto outer page prevent preventing prevents pristine provides published reason related reload required role roundtrip rules scope sends server set should since some spec specific specified specify submission submit submitted submitting than that the then this toequal translate trigger triggered triggers true two type under unless use usertype valid way ways well what when which will you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.form.FormController","shortName":"FormController","type":"object","keywords":"$compileprovider $dirty $error $invalid $pristine $valid all already and angular api are arrays being containg containing control controls creates directive dirty each email error form formcontroller forms given has hash instance interacted invalid its keeps keys least module names nested not object one references required state such that the them tokens track true url user valid validation values well where with yet"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.input","shortName":"input","type":"directive","keywords":"$compileprovider $error $scope $valid and angular api assignable behavior browsers changes class control ctrl data-bind data-binding defined directive does due element empty enter entered error executed expect expected expression expressions false follows for form function guest html html5 initialize inline input interaction invalid key last lastname length less long longer match max maxlength min minlength model module myform name ng-controller ng-maxlength ng-minlength ng-model ng-show ngchange ngmaxlength ngminlength ngmodel ngpattern not older pattern patterns polyfills property published regexp required ridiculously scope set sets short shorter should some text than the toequal tomatch too true type types under user username valid validation value visitor when which with"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.input.checkbox","shortName":"input [checkbox]","type":"inputType","keywords":"$compileprovider $scope angular api assignable change changes check checkbox control ctrl data-bind directive due element executed expect expression false form function html input inputtype interaction module myform name ng-controller ng-false-value ng-model ng-true-value ngchange ngfalsevalue ngmodel ngtruevalue not property published selected set should state the toequal true type under user value value1 value2 when which with yes"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.input.email","shortName":"input [email]","type":"inputType","keywords":"$compileprovider $error $scope $valid address angular api assignable class com control ctrl data-bind defined directive does email empty enter entered error expect expected expression expressions false for form function initialize inline input inputtype invalid key longer match maxlength minlength model module myform name ng-controller ng-model ng-show ngmaxlength ngminlength ngmodel ngpattern not pattern patterns property published regexp required scope sets shorter should text than the toequal true type under valid validation value which with xxx"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.input.number","shortName":"input [number]","type":"inputType","keywords":"$compileprovider $error $scope $valid and angular api assignable changes class control ctrl data-bind defined directive does due element empty enter entered error executed expect expected expression expressions false for form function greater initialize inline input inputtype interaction invalid key less list longer match max maxlength min minlength model module myform name ng-controller ng-model ng-show ngchange ngmaxlength ngminlength ngmodel ngpattern not number over pattern patterns property published regexp required scope sets shorter should text than the then toequal transformation true type under user valid validation value when which with"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.input.radio","shortName":"input [radio]","type":"inputType","keywords":"$compileprovider $scope angular api assignable blue button change changes color control ctrl data-bind directive due element executed expect expression form function green html input inputtype interaction module myform name ng-controller ng-model ngchange ngmodel property published radio red select selected set should state the toequal type under user value when which with"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.input.text","shortName":"input [text]","type":"inputType","keywords":"$compileprovider $error $scope $valid angular api assignable binding changes class control ctrl data data-bind defined directive does due element empty enter entered error executed expect expected expression expressions false for form function guest hello html initialize inline input inputtype interaction invalid key longer match maxlength minlength model module multi myform name ng-controller ng-model ng-pattern ng-show ngchange ngmaxlength ngminlength ngmodel ngpattern not only pattern patterns property published regexp required scope sets shorter should single standard text than the toequal true type under user validation value when which with word world"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.input.url","shortName":"input [url]","type":"inputType","keywords":"$compileprovider $error $scope $valid angular api assignable changes class com content control ctrl data-bind defined directive does due element empty enter entered error executed expect expected expression expressions false for form function http initialize inline input inputtype interaction invalid key longer match maxlength minlength model module myform name ng-controller ng-model ng-show ngchange ngmaxlength ngminlength ngmodel ngpattern not pattern patterns property published regexp required scope sets shorter should text than the toequal true type under url user valid validation value when which with xxx"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngApp","shortName":"ngApp","type":"directive","keywords":"$compileprovider add and angular any api application auto-bootstrap below bootstrap can compiled designates directive document easiest element example html load module name ngapp not one only optional page per placed resolved root the then this typically use used way would"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngBind","shortName":"ngBind","type":"directive","keywords":"$compileprovider $scope alternative and angular any api attribute before below binding bindings box browser but changes check compiles content ctrl curly desirable directive directly displayed doc-example-live don double element enter evaluate expect expression expressions function given greeting guide hello html input instantly instead into invisible its less like live loading makes markup module momentarily name ng-bind ng-controller ng-model ngbind ngcloak once over page prefered preview problem put raw replace scenario should similar since solution specified state tells template text that the this tobe type typically update use user using value verbose when which while whirled with world would you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngBindHtmlUnsafe","shortName":"ngBindHtmlUnsafe","type":"directive","keywords":"$compileprovider $sanitize absolutely and angular any api are binding content creates current directive docs element evaluate evaluating examples expression expressions for guide innerhtml innerhtml-ed into module ngbindhtml ngbindhtmlunsafe ngsanitize not only restrictive result sanitized see should source that the this too trust use when will you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngBindTemplate","shortName":"ngBindTemplate","type":"directive","keywords":"$compileprovider $scope and angular any api binding box can change check contain ctrl directive doc-example-live element elements enter eval expect expressions few form function greeting greetings have hello here html input module multiple name ng-bind ng-bind-template ng-controller ng-model ngbind ngbindtemplate not option replaced required salutation should since some span specifies such template text that the title tobe try type unlike user using watch with world"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngChange","shortName":"ngChange","type":"directive","keywords":"$compileprovider $scope angular api change changes changing checkbox click coming confirmed controller counter debug directive element evaluate evaluated expect expression for from function given input model module ng-change ng-change-example1 ng-change-example2 ng-controller ng-model ngchange ngmodel not note present requires should the this toequal true type user value view when"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngChecked","shortName":"ngChecked","type":"directive","keywords":"$compileprovider absence and angular api attributes binding both browsers check checkbox checkboxes checked checkslave compiler correctly directive doc-example-live evaluated expect expression false from function html input introduce master means module ng-checked ng-model ngchecked not presence preserve prevents problem prop require retrieving should solve special specs such that the them this tobefalsy tobetruthy true type will"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngClass","shortName":"ngClass","type":"directive","keywords":"$compileprovider add added all allows already and angular any api are array boolean button can changes check class classes classname clear click color css databinding delimited directive doc-example-live duplicate dynamically element eval evaluation expect expression expressions function guide html index map module my-class myvar name names new ng-class ng-click ngclass not only particular previously prop red removed representing represents result scenario set should space span string style text that the then tomatch type using value values was when won you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngClassEven","shortName":"ngClassEven","type":"directive","keywords":"$compileprovider affect and angular any api applied array blue can cate check class classname color conjunction css delimited directive doc-example-live eval evaluation even exactly except expect expression expressions function guide html index john mary module name names ng-class-even ng-class-odd ng-init ng-repeat ngclass ngclasseven ngclassodd ngrepeat odd only prop red representing result rows scenario scope should space span string style suz takes the this tomatch with within works"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngClassOdd","shortName":"ngClassOdd","type":"directive","keywords":"$compileprovider affect and angular any api applied array blue can cate check class classname color conjunction css delimited directive directives doc-example-live eval evaluation even exactly except expect expression expressions function guide html index john mary module name names ng-class-even ng-class-odd ng-init ng-repeat ngclass ngclasseven ngclassodd ngrepeat odd only prop red representing result rows scenario scope should space span string style suz takes the this tomatch with within work works"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngClick","shortName":"ngClick","type":"directive","keywords":"$compileprovider $event allows angular any api available behavior check click clicked count custom directive doc-example-live element evaluate expect expression expressions function guide increment module ng-click ng-init ngclick object should specify the tobe upon when you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngCloak","shortName":"ngCloak","type":"directive","keywords":"$compileprovider across add addition all alternatively and angular any api application applied are around attr attribute avoid being below benefit best briefly browser browsers but can cannot caused children class comes compilation compiled cooperation css deletes directive display displayed doc-example-live during effect element elements embedded example expect external file files fine-grained flicker following for form from function head hello hidden html ie7 included its legacy like limitation loaded loading makes match min module must ng-cloak ngcloak none not order prefered prevent progressive provide raw remove rendering result rule script section selector should shown stylesheet support tagged template template1 template2 that the their they this tobedefined typically undesirable use used view visible when which while with within work works you your"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngController","shortName":"ngController","type":"directive","keywords":"$compileprovider $route $scope access accessible add addcontact adding alert allows also alternative and angular any api application are aspect assigns attached automatically becomes behavior behind bindings business called can changes check class clear clearcontact clearing click components contact contacts controller controllers current data declared define design directive div doc-example-live dom easily easy editing element email evaluates expect express expression expressions for form from function globally greet greeting guide has here how href index indexof information input instance into john key logic manual markup methods model model-view-controller module mvc name need ng-click ng-controller ng-model ng-repeat ngcontroller note notice org pattern phone principles properties push reflected removecontact removing rendered scope scopes service settingscontroller should simple smith source specifies splice supports tab template text that the these this tobe type typically update user val value var via view way with without yourname"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngCsp","shortName":"ngCsp","type":"directive","keywords":"$compileprovider angular api application directive don element enable enabled enables evaluator expression html mode module mozilla need ngapp ngcsp org other performance policy root security should slightly suffer support template the this unless used will with you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngDblclick","shortName":"ngDblclick","type":"directive","keywords":"$compileprovider $event allows angular any api available behavior custom dblclick directive evaluate event expression expressions guide module ngclick ngdblclick object see specify the upon you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngDisabled","shortName":"ngDisabled","type":"directive","keywords":"$compileprovider absence and angular api attributes binding browsers but button check checkbox checked chrome click compiler correctly directive disabled doc-example-live enabled evaluated expect expression false following from function html ie8 ies input introduce isdisabled make markup means module ng-disabled ng-init ng-model ngdisabled not older presence preserve prevents problem prop require retrieving scope should solve special specs such that the them this tobefalsy tobetruthy toggle true type will"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngForm","shortName":"ngForm","type":"directive","keywords":"$compileprovider alias allow angular api controller controls determined directive does eac elements example for form forms html into module name needs nest nestable nesting ngform not published related scope specified sub-group the this under useful validity will"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngHide","shortName":"ngHide","type":"directive","keywords":"$compileprovider and angular any api check checkbox checked click conditionally count directive directives doc-example-live element expect expression expressions function guide hidden hide html input module ng-hide ng-model ng-show nghide ngshow portion respectively should show shown span the then toequal truthy type when you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngHref","shortName":"ngHref","type":"directive","keywords":"$compileprovider actual and angular any api attr attribute before broken buggy but can chance change click clicks com contain correct directive don element empty enter error example execute expect function gravatar has href http input inside like likely link link-1 link-2 link-3 link-4 link-5 link-6 location makes markup module most name ng-click ng-href ng-model nghref not only open page path problem reload replace return should solves specified string that the this tobe toequal url user uses using val value variable way when which will window with without write wrong xxx"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngInclude","shortName":"ngInclude","type":"directive","keywords":"$anchorscroll $compileprovider $scope access after all and angular api applies attribute autoscroll blank browsers call change compiles constant content cross-domain ctrl directive disable doc-example-live eca enable evaluate evaluates evaluating expect expression external fetches file for fragment function html iit included includes index keep load loaded make mind module mypartialtemplate name new ng-controller ng-include ng-model ng-options nginclude not onload only option origin otherwise partial policy quotes requests resources same scenario script scroll scrolling select set should some source src string sure template template1 template2 templates text that the toequal tomatch truthy url value viewport when whether without won work wrap you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngInit","shortName":"ngInit","type":"directive","keywords":"$compileprovider angular any api before bootstrap check directive during enters eval executed execution expect expression expressions function greeting guide hello initialization mode module ng-init nginit person should specifies tasks template the tobe world"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngList","shortName":"ngList","type":"directive","keywords":"$compileprovider $error $scope $valid angular api array between class comma-seperated converted converts ctrl delimiter directive empty enter error expect expression false form function igor initialize input into invalid list misko model module myform name names namesinput ng-controller ng-list ng-model ng-show nglist optional regular required should specified split string strings text that the then toequal true used value vojta will"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngModel","shortName":"ngModel","type":"directive","keywords":"$compileprovider angular api basic behavior binding can checkbox class control css data directive directives dirty easily element email errors examples for form how input into keeping model module ng-dirty ng-invalid ng-pristine ng-valid ngmodel number onto other own parent providing radio register related require required responsible see select setting state such tells text textarea that the together two-way url use validation view well which with works write you your"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngModel.NgModelController","shortName":"NgModelController","type":"object","keywords":"$compileprovider $dirty $error $formatters $invalid $modelvalue $parsers $pristine $setvalidity $setviewvalue $valid $viewvalue actual all already and angular api assign available bject bound call called calls camelcase can change changes class control convert converted current dash-case data-binding directive directives does dom error errors event example executes for form formatter formatters from function functions get given handler has hash input interacted internally into invalid isvalid keys least listeners marked method model module myerror name ng-invalid-my-error ng-valid-my-error ngmodel ngmodelcontroller not notifies notify object one parser read reads registered result resulted sanitize select should somecontrol state string that the there these this true updates user valid validate validationerrorkey validator validators validity value view well when whenever whether will with within yet"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngMousedown","shortName":"ngMousedown","type":"directive","keywords":"$compileprovider $event allows angular any api available behavior custom directive evaluate event expression expressions guide module mousedown ngclick ngmousedown object see specify the upon you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngMouseenter","shortName":"ngMouseenter","type":"directive","keywords":"$compileprovider $event angular any api available behavior custom directive evaluate event expression expressions guide module mouseenter ngclick ngmouseenter object see specify upon"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngMouseleave","shortName":"ngMouseleave","type":"directive","keywords":"$compileprovider $event angular any api available behavior custom directive evaluate event expression expressions guide module mouseleave ngclick ngmouseleave object see specify upon"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngMousemove","shortName":"ngMousemove","type":"directive","keywords":"$compileprovider $event angular any api available behavior custom directive evaluate event expression expressions guide module mousemove ngclick ngmousemove object see specify upon"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngMouseover","shortName":"ngMouseover","type":"directive","keywords":"$compileprovider $event angular any api available behavior custom directive evaluate event expression expressions guide module mouseover ngclick ngmouseover object see specify upon"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngMouseup","shortName":"ngMouseup","type":"directive","keywords":"$compileprovider $event angular any api available behavior custom directive evaluate event expression expressions guide module mouseup ngclick ngmouseup object see specify upon"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngMultiple","shortName":"ngMultiple","type":"directive","keywords":"$compileprovider absence and angular api attributes binding browsers check checkbox checked compiler correctly directive doc-example-live evaluated expect expression false from function html input introduce means module multiple ng-model ng-multiple ngmultiple not presence preserve prevents problem prop require retrieving select should solve special specs such that the them this tobefalsy tobetruthy toggle true type will"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngNonBindable","shortName":"ngNonBindable","type":"directive","keywords":"$compileprovider alone angular any api are binding bindings but check chunk code directive div doc-example-live element example expect function html ignore left like location looks make module necessary ng-non-bindable ngnonbindable one present should simple sometimes text the there this tobe tomatch two use where which wrapped write"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngPluralize","shortName":"ngPluralize","type":"directive","keywords":"$compileprovider $scope according actual added allows also and angular any api are attribute attributes better between binded bounded braces bundled but can case categories category closed configure configuring correct correctly correspoding count ctrl current customization data-binded decide deduct default desired dev did directive display displayed displays doc-example-live document documentation dozen either en-us enter evaluated example expect experience explicit expression expressions following for found from function further guide how html http i18n igor including input instead interpret into its john json kate later let locale localization look many mapping mappings marry match matched matches may message messages might misko module must names ng-controller ng-model ng-non-bindable ng-pluralize ngpluralize nobody not note notice number numbers object off offset offsets one only optional org other others overridden overview parts people perhaps person person1 person2 personcount placeholder plural pluralization pluralized previous provide providing pural replace result rule rules scope see set should show showing shown shows simple specifies specify specifying still string strings substituted take taken text that the there these this three throughout tobe total two type use user uses using value variable view viewing views vojta want when which while will with without would you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngReadonly","shortName":"ngReadonly","type":"directive","keywords":"$compileprovider absence and angular api attr attributes binding browsers check checkbox checked compiler correctly directive doc-example-live evaluated expect expression false from function html input introduce make means module ng-model ng-readonly ngreadonly not presence preserve prevents problem prop readonly require retrieving should solve special specs such text that the them this tobefalsy tobetruthy toggle true type value will"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngRepeat","shortName":"ngRepeat","type":"directive","keywords":"$compileprovider $index $position adam age amalie and angular any api are can check collection count current currently defined directive display doc-example-live each element enumerate every example expect exposed expression first for formats friend friends from function gets given giving have how identifiers including index indicating initializes instance instantiates item iterator its john key last length length-1 list local loop mary middle module name names ng-init ng-repeat ngrepeat offset old once one own per person position properties repeated repeater row scope set should special supported template the then they this tobe toequal track tracks two user uses using value var variable where who years"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngSelected","shortName":"ngSelected","type":"directive","keywords":"$compileprovider absence and angular api attributes binding browsers check checkbox compiler correctly directive doc-example-live evaluated expect expression false from function greet greetings html input introduced means module ng-model ng-selected ngselected not option presence preserve prevents problem prop require retrieving select selected should solve special specs such that the them this tobefalsy tobetruthy true type will"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngShow","shortName":"ngShow","type":"directive","keywords":"$compileprovider and angular any api check checkbox checked click conditionally count directive directives doc-example-live dom element expect expression expressions function guide hidden hide input module ng-hide ng-model ng-show nghide ngshow portion respectively should show shown span the then toequal tree truthy type when your"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngSrc","shortName":"ngSrc","type":"directive","keywords":"$compileprovider angular any api attribute browser buggy can com contain correct directive doesn expression fetch from gravatar http img inside like literal markup module ng-src ngsrc problem replaces right solves src string text the this until url using way which will with work write"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngStyle","shortName":"ngStyle","type":"directive","keywords":"$compileprovider allows and angular any api are black button check clear click color conditionally corresponding css directive doc-example-live element evals expect expression expressions for function guide html index keys module mystyle name names ng-click ng-style ngstyle object red rgb scenario set should span style text the those tobe type value values which whose you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngSubmit","shortName":"ngSubmit","type":"directive","keywords":"$compileprovider $scope action additionally and angular api binding check click ctrl current default directive doc-example-live element empty enables enter eval events expect expression expressions for form function guide hello hit ignore list means module name ng-controller ng-model ng-submit ngsubmit onsubmit page prevents push reloading request sending server should strings submit text the this tobe type val value"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngSwitch","shortName":"ngSwitch","type":"directive","keywords":"$compileprovider $scope add against angular api case casses change child conditionally ctrl deafault default directive displayed div doc-example-live dom elments expect expression for function home item items match matchvalue1 matchvalue2 module ng-controller ng-model ng-options ng-switch ng-switch-default ng-switch-when ngswitch ngswitchdefault ngswitchwhen option other select selection settings should span start statement structure text the then this tomatch when will"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngTransclude","shortName":"ngTransclude","type":"directive","keywords":"$compileprovider $scope angular any api background-color bind black border ctrl directive dolor dolorem dom enter est expect function gray have here input insert ipsum isolate locals lorem module neque ng-controller ng-model ng-transclude ngtransclude pane porro qui quia quisquam restrict return scope should solid style template text the title toequal transclude transcluded true"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.ngView","shortName":"ngView","type":"directive","keywords":"$compileprovider $location $locationprovider $route $routeparams $routeprovider $scope according and angular api book bookcntl bookid ch1 ch4 changes chapter chaptercntl chapterid choose click compile complements configuration configure content controller correct current directive doc-example-live eca element every expect file function get href html html5 html5mode included including index into jsfiddle layout letter links load main maincntl moby module name ng-controller ng-view ngview overview params path rendered route scarlet scenario scope script service should template text that the time tomatch var view when with working"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.script","shortName":"script","type":"directive","keywords":"$compileprovider $templatecache angular api can click content currenttpl defined directive element expect function html inlined inside into load module must ng-click ng-include nginclude ngview script set should src tag template templates text that the tomatch tpl-content tpl-link type used with"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.select","shortName":"select","type":"directive","keywords":"$compileprovider $scope allowed angular api array assignable attribute background-color because below black blue border bound can check chose class color colors considered control currently dark data data-bind data-binding default demonstration directive dom during dynamically each element elements empty entered evaluates evaluating example expect expression facility following for forms function generate group grouped hard-coded height href html identified instead into item iterate iteration iterator key label light likely list local menu model module most mycntrl name nested ng-click ng-controller ng-model ng-options ng-repeat ng-style ngmodel ngoptions ngrepeat non-string not note null nullable object obtained one only option optionally options over parent property propertyname provides push red refer represent represented required result see select selected set shade should single sources specified splice string style the then this tomatch used using valid value values variable want when where which white will with yellow you"}, -{"section":"api","id":"angular.module.ng.$compileProvider.directive.textarea","shortName":"textarea","type":"directive","keywords":"$compileprovider and angular api are assignable changes control data-bind data-binding defined directive does due element entered error exactly executed expected expression expressions for form html inline input interaction key longer match maxlength minlength module name ngchange ngmaxlength ngminlength ngmodel ngpattern not pattern patterns properties property published regexp required same scope sets shorter textarea than the this those under user validation value when which with"}, -{"section":"api","id":"angular.module.ng.$controller","shortName":"$controller","type":"function","keywords":"$controller $controllerprovider $injector angular api auto but call called can check com considered controller controllers current evaluating extracted following for function github given global https injection instance instantiating into just locals module name object one otherwise override registered responsible retrieve returns scope service simple steps string that the then this used using version via which window with"}, -{"section":"api","id":"angular.module.ng.$controllerProvider","shortName":"$controllerProvider","type":"object","keywords":"$controller $controllerprovider allows angular annotations api array controller controllers create decorated function method module name new notation object provider register registration service the this used via with"}, -{"section":"api","id":"angular.module.ng.$defer","shortName":"$defer","type":"function","keywords":"$browser $defer $exceptionhandler and angular any api block but can cancel canceled cancels defer defered deferid deferred delegates exceptions executed execution flush function functions hasn identified into milliseconds module queue returned returns service should successfuly task tests that the token true try use used via was who with wraps yet you"}, -{"section":"api","id":"angular.module.ng.$document","shortName":"$document","type":"object","keywords":"$document $window angular api browser document element jquery module object reference the window"}, -{"section":"api","id":"angular.module.ng.$exceptionHandler","shortName":"$exceptionHandler","type":"function","keywords":"$exceptionhandler $log about angular angular-mocks any api associated browser cause console context default delegated delegates error exception expressions function implementation information into loaded logs mock module ngmock optional overridden service simply tests the this thrown uncaught unit was which with"}, -{"section":"api","id":"angular.module.ng.$filter","shortName":"$filter","type":"function","keywords":"$filter angular api are data displayed expression filter filter_name filters follows for formatting function general module name retrieve syntax templates the used user"}, -{"section":"api","id":"angular.module.ng.$filter.currency","shortName":"currency","type":"filter","keywords":"$filter $scope amount angular api ctrl currency current custom default displayed enter expect filter for formats formatted function identifier init input locale module ng-controller ng-model number provided should symbol tobe type update usd used when with"}, -{"section":"api","id":"angular.module.ng.$filter.date","shortName":"date","type":"filter","keywords":"$filter also and angular api based can clock composed contain date datetime day description digit eee eeee either elements en_us equivalent expect filter following for format formats formatted formatting friday fulldate function guide hour i18n input iso like literal locale localizable longdate marker medium mediumdate mediumtime milliseconds minute mmm mmmm module month morning need ng-non-bindable not number object offset one order output padded predefined quote quoted quotes recognized representation requested rules second sep september sequence short shortdate shorter shorttime should single specified sssz string the these timezone tomatch two use used values various versions week with year yyyy yyyy-mm-dd yyyy-mm-ddthh yyyymmddthhmmssz"}, -{"section":"api","id":"angular.module.ng.$filter.filter","shortName":"filter","type":"filter","keywords":"$filter about above accept across adam against all and angular any api arbitrary array arrays augment called can column contain contained containing described each element elements enter equivalent example expect expression expressions fields filter filtering filters final for friend friends from function have information input items john julie mary match mike module more name negated new ng-init ng-model ng-repeat note object objects one only pattern phone predicate prefixing properties property result results return returned returns search searchobjresults searchtext searchtextresults see selecting selects should simple source special specific string strings subset substring text that the this those toequal true type used using value when which will with write"}, -{"section":"api","id":"angular.module.ng.$filter.json","shortName":"json","type":"filter","keywords":"$filter allows and angular any api arrays automatically binding convert converted curly debugging double expect filter filtered for function into javascript json jsonify module mostly name notation object objects primitive should string the this tomatch types useful using value when you"}, -{"section":"api","id":"angular.module.ng.$filter.limitTo","shortName":"limitTo","type":"function","keywords":"$filter $scope about and angular api are array arrays augment beginning containing copied creates ctrl doc-example-live either elements end enter entered exceed exceeds expect expressions first for from function had information input integer items length less limit limited limitto maximum module more negative new ng-controller ng-model not note number numbers numer only output positive returned see should sign size source specified sub-array taken than the this three tobe toequal trimmed type update used val value when will"}, -{"section":"api","id":"angular.module.ng.$filter.lowercase","shortName":"lowercase","type":"filter","keywords":"$filter angular api converts filter lowercase module string"}, -{"section":"api","id":"angular.module.ng.$filter.number","shortName":"number","type":"filter","keywords":"$filter $scope after and angular api ctrl decimal decimalplaces default digit each empty enter expect filter format formats formatting fractions function input module negative ng-controller ng-model not number numbers places returned round rounded should string text the third tobe update val"}, -{"section":"api","id":"angular.module.ng.$filter.orderBy","shortName":"orderBy","type":"function","keywords":"$filter $scope about adam age aged angular api are array arrays ascending augment but called can class click column comparator control copy ctrl descending determine different doc-example-live element elements equivalent evaluates example expect expression expressions first for friend friends function getter href informaton items john julie mary mike module more name next ng-click ng-controller ng-repeat note number object one operator optionally order orderby ordered orders phone predicate predicates prefixed property reorder result reverse see selects should sort sorted sorting source specified string such table the this tobe toequal two type used user using when which will with"}, -{"section":"api","id":"angular.module.ng.$filter.uppercase","shortName":"uppercase","type":"filter","keywords":"$filter angular api converts filter module string uppercase"}, -{"section":"api","id":"angular.module.ng.$filterProvider","shortName":"$filterProvider","type":"object","keywords":"$filterprovider $injector $provide about achieve always and angular annotated api are check consists create creating definition demonstrate dependencies dependency developer expect factory filter filters for forgiving function functions generate greet guide hello how however information inject injectable injected injection input instance just method module more mymodule name need needed object output own register registered registration responsible return reverse reversefilter salutation same see service should suffixe templates text the this tobe transform under understanding uses validity value which with work your"}, -{"section":"api","id":"angular.module.ng.$http","shortName":"$http","type":"function","keywords":"$browser $cachefactory $http $httpbacked $httpbackend $httpprovider $injector $provide $resource $rootscope $scope $templatecache able above absolute abstraction accept accessing add added adding additionally address advanced advantage after all allows also and angular angularjs anonymous any api apis application applications applies are argument arguments array aspx assured asynchronous asynchronously attack authentication automatically available backend based before being below body both browser built but cache cached caching callback callbacks called calling came can certain check click client code com comes common communication complete conditions config configuration configured consider considerations contain contains content content-type cookie cooperate cooperation core could counter created creating credentials cross currently data debugging default defaults deferred definition delete delivery dependencies dependency1 dependency2 described describing deserialize deserialized designing desirable destination destructured details detected digest doesn domain each element eliminate enable enabled equal equivalent error etc even example expect exposed facilitates factories factory failed fails familiarize fassion fetch fetchctrl first flag following for forgery format from fulfil fulfilled fully function functions future gain general generate get getter global globally guarantees handed handler handling has have head header headers headersgetter hello hero higher how html http http-hello https important index info information initiated injected instance intercept interceptor interceptors into invalid invocation invoke issues its javascript json json_callback jsonified jsonp kind level leverage list local locally lower-cased made make making map matches matter meant mechanism message method methods milliseconds mock module more mozilla much multiple must my-header myhttpinterceptor name need needs new next ng-click ng-controller ng-model ngmock ngresource non-get not note null object objects occurs one only optional order org original other otherwise out outside over override overwrite own parser party passed patters pending pendingrequests perform performing php please populated post pre-configured prefix preprocessing prevent primarily private processed processing promise properties property protection provide provided provides purposes push put range read readable reads real receive received recommend register registered reject relative remaining remote remove representation representing request requested requests require required resource respectively response responseinterceptors responseornewpromise responses return returned returns running runs runtime salt same sample scenario script section section_5 sections security see send sending sent serialize serialized served server servers service session set sets setting shortcut should signature similar simple simplify simply since single site size some something specific specified specify specifying standard start status stores strategies string strings strip subsequent succeeds success such sure synchronous take takes technique testing text than that the them then there therefore these they third this threats time timeout tobe token tokens tomatch transform transformation transformations transformed transforming transformrequest transformresponse transforms true turn turned two type unauthorized under understand unique unit updatemodel url usage use used user using value verifiable verify version via vulnerability vulnerable was way web web-site well were when whether which while wikipedia will with withcredentials without work x-requested-with x-xsrf-token xhr xmlhttprequest xsrf xsrf-token yet you your yourself"}, -{"section":"api","id":"angular.module.ng.$httpBackend","shortName":"$httpBackend","type":"object","keywords":"$browser $document $http $httpbackend $resource $window abstractions and angular api backend browser can deals delegates directly during higher-level http implementation incompatibilities instead jsonp mock module need never ngmock ngresource object responses service should swapped testing that the this trained use used which with xmlhttprequest you"}, -{"section":"api","id":"angular.module.ng.$interpolate","shortName":"$interpolate","type":"function","keywords":"$compile $interpolate $interpolateprovider $parse against angular any api are binding compiles compute configuring context data embedded evaluated exp expect expression expressions for function has have hello html injected interpolate interpolated interpolation into markup module must musthaveexpression null object order parameters return see service set string strings text the then these this toequal true used var which will with"}, -{"section":"api","id":"angular.module.ng.$interpolateProvider","shortName":"$interpolateProvider","type":"function","keywords":"$interpolateprovider and angular api configuring deafults defaults denote end ending endsymbol expression for function interpolated interpolation markup method module new set start starting startsymbol string symbol the used value"}, -{"section":"api","id":"angular.module.ng.$locale","shortName":"$locale","type":"object","keywords":"$locale angular api components en-us for formatted languageid-countryid locale localization module now object only provides public right rules service the various"}, -{"section":"api","id":"angular.module.ng.$location","shortName":"$location","type":"object","keywords":"$browser $digest $document $location $sniffer absurl according add adding address all always and angular any api application are available back bar base begin browser button called can change changes clicks current deleted developer during encoded exposes for forward fragment full getter guide hash history host http https ietf information instead into link location makes method methods missing module more mozilla new note null object observe one only org override parameter params paramvalue parses part path port prefix protocol record reflected replace replacing representation represents return rfc rules search see segments service services set setter should single slash specified string synchronizes the then this txt url user using value watch when will window with without you your"}, -{"section":"api","id":"angular.module.ng.$locationProvider","shortName":"$locationProvider","type":"object","keywords":"$locationprovider and angular api application are available configure current deep for getter hash hashprefix how html5 html5mode itself linking mode module object part path paths prefix property search setter stored strategy the use used value"}, -{"section":"api","id":"angular.module.ng.$log","shortName":"$log","type":"object","keywords":"$log $window and angular api browser button console debugging default enter error for function hello hit implementation info information into log logctrl logging main message method module ng-click ng-controller ng-model object open page present purpose service simple simplify text the this troubleshooting type warn warning with world write writes"}, -{"section":"api","id":"angular.module.ng.$q","shortName":"$q","type":"service","keywords":"$apply $http $rootscope about access action additionally after alert all allow allowed allows already also and angular another any api apis approach are argument array associated assume async asyncgreet asynchronous asynchronously attached available avoiding because been behavior between browser but bytes call callback callbacks called calling calls can catch chain chaining chains changes code com combines comes common commonjs comparing completes completion complexity composition constant constructed contains coresponding cost could create created creates current dealing defer deferred deferreds derived describes differences documentation don each easily else engine equivalent error errorcallback especially event example exception executes expose extra failed familiar faster features finish finished first flickering for forward from function functionality further future get given greeting handle handling hard has have hello hood immediately implement implementation important incremented index injected input inspired instance instead integrated interacting interceptors interested interface into its javascript joining keyword keywords kowal kris last length let lexical like loop main make makes many may means mechanism message method might model models module more multiple name need needed new newpromiseorvalue not object observation observed obvious old one org otherwise our parallel parties party passed pause payoff performed perspective please point possible powerful programing promise promisea promiseb promises propagation properly proposal purpose reason recognized recover regardless reject rejected rejection rejects repaints representing represents resolution resolve resolved resolves resolving response result resulting rethrow retrieved return returning returns robin same scope section see serial service settimeout should signaling since single something soon source specified success successcallback successful synchronous task tasks templates templating that the then then-able there they think this three throw time tiny traditional treat trouble trusted try turn unnecessary unsuccessful used useful value values var variables very via want was way well were what when which why wikipedia will with worry worth would wrap wraps you your"}, -{"section":"api","id":"angular.module.ng.$rootScope","shortName":"$rootScope","type":"object","keywords":"$rootscope all and angular api application are child developer event every for guide has life-cycle mechanism model module object other processing provide root scope scopes see single the watching"}, -{"section":"api","id":"angular.module.ng.$rootScope.Scope","shortName":"Scope","type":"function","keywords":"$apply $broadcast $compileprovider $destroy $digest $emit $eval $evalasync $exceptionhandler $id $injector $new $on $root $rootscope $watch accidently according achieved adam adverse after afterwards all along alphanumeric also and angular any api append application are args arguments assume asynchronously attributes auto automatically because been before below broadcasted browser call callback called calling calls can cancel canceled cancelled cancels cannot cases catch chance change changes child children cleanup code collection compare comparison compiled complex context controllers copy counter created creates creating current currentscope cycle deadlock debugging default defaults defined dependency deregistration desired destroyed detached detect detected detection detects determined didn direct directive directives directly discussion dispatches does dom don downwards due each eligible emit emitted emmited engular equal equality equals evaluated evaluating event events every example exceeded exceeds exception exceptions execute executed executes executing execution exp expect expression expressions factory finally fire fired firing following for force format forwarded framework from function further garbage get give given greeting guarantees guide handler handling handy has hash have having hello here hierarchy how html idempotent identical immediately implications implies increasing indirect inequality infinite infinity inherit inheritance initial initialization initialize injected injection injector instancecache instead interact into invoke invoking isolate isolated iteration iterations its just keeps key later least let libraries life life-cycle limit listen listener listeners listening local locals longer loop makes managing map maximum may means memory method misko model module more multiple must name necessary need new newly newval newvalue ngcontroller ngrepeat not notification notified notifying number object objectequality old oldval oldvalue one only onto optional options other outside override parameter parameters parent participating party passed per perform performance performed permanently point possible pre-instantiated prepared prevent previous process propagate propagated propagates propagating propagation proper properties property prototypically provided providers provides pseudo-code rare rather read refference register registered registers removal remove removed rendering rerun rerunning reruns result retrieved return returning returns root rules run salutation save scenario scope scoped scopes script see sequence service services set settimeout should show simple simulate since snippet stages starts state still stop string such targetscope template that the their then these third this through throw thus time times toequal toward transitions traverses trigger triggers true try two type undesirable unique unit-testing unit-tests unrolling until upwards used useful using usually value values var variable variables want was watch watched watcher watchers watches watchexpression watching way welcome were when whenever whether which widget widgets will with within world xhr yet you your"}, -{"section":"api","id":"angular.module.ng.$rootScopeProvider","shortName":"$rootScopeProvider","type":"object","keywords":"$rootscope $rootscopeprovider and angular api assuming attempt before current default digest digestttl execute for function giving iteration iterations limit model module number object provider scope service sets should that the unstable"}, -{"section":"api","id":"angular.module.ng.$route","shortName":"$route","type":"object","keywords":"$compileprovider $location $locationprovider $route $routeparams $routeprovider $scope against all and angular api array book bookcntl bookid can causes ch1 ch4 changed changing chapter chaptercntl chapterid choose click compile configure configured conjunction content controller controllers correct creates current deep-linking define definition directive doc-example-live element even example existing expect for function get hash hasn how href html html5 html5mode index inlined jsfiddle letter links load maincntl map match method moby module name new ng-controller ng-view ngview note object params partial partials path pulls reference reinstantiates reload result route routes scarlet scenario scope script service should shows template templates text that the ther this through tomatch tries typically url urls used using var views watches well when with working you"}, -{"section":"api","id":"angular.module.ng.$routeParams","shortName":"$routeParams","type":"object","keywords":"$location $route $routeparams and angular api are case change collision com combination current even extracted given guarantees html http identity its likely matched moby module name object occurs over parameter parameters params path precedence properties remain route search sectionid service set take that the then unchanged url when will"}, -{"section":"api","id":"angular.module.ng.$routeProvider","shortName":"$routeProvider","type":"object","keywords":"$compileprovider $location $route $routeprovider $routeupdate add adds against and angular api applying assigned associated broadcasted browser called change changes configuring contains controller created current custom definition directive directives drop event exacly example expected extracted false following for from function html information mapping match matched method missing module new newly nginclude ngview object one only option other otherwise parameters params path properties redirection redirectto redudant reload return root route routes scope search see self service set sets should slash still string template that the then trailing trigger update updated url used value when which will with"}, -{"section":"api","id":"angular.module.ng.$templateCache","shortName":"$templateCache","type":"object","keywords":"$cachefactory $templatecache angular api cache for html module object see storing templates used"}, -{"section":"api","id":"angular.module.ng.$window","shortName":"$window","type":"object","keywords":"$service $window alert all always angular api are available because browser causes current don evaluated expressions for from global globality globally greeting hello javascript may mocked module ng-click ng-init ng-model object overriden problems refer reference removed respect scope service suffer testability testing text the they through type variable while window with world"}, -{"section":"api","id":"angular.module.ngCookies","shortName":"ngCookies","type":"overview","keywords":"angular api module ngcookies overview"}, -{"section":"api","id":"angular.module.ngCookies.$cookies","shortName":"$cookies","type":"object","keywords":"$browser $cookies $eval access adding and angular api are browser cookies created current end exposed module new ngcookies object only properties provides read removing simple the this"}, -{"section":"api","id":"angular.module.ngCookies.$cookieStore","shortName":"$cookieStore","type":"object","keywords":"$cookies $cookiestore angular api are automatically backed cookie cookies delete deserialized for from get given key key-value lookup method module ngcookies object objects pair provides put remove retrieved returns serialized session sets storage stored that the this tojson use value"}, -{"section":"api","id":"angular.module.ngMock","shortName":"ngMock","type":"overview","keywords":"$injector adds and angular api auto configuration mocks module ngmock overview the unit-test used useful well which with"}, -{"section":"api","id":"angular.module.ngMock.$browser","shortName":"$browser","type":"object","keywords":"$browser $defer all and angular api apis are available browser callbacks can code commonly cookies current defer enables etc except executes executing fake flush flushes following for functions hard helper implementation method methods milliseconds mock module ngmock now number object pending property provides real requests same see service settimeout several test testing tests that the there this time used uses via which xhr"}, -{"section":"api","id":"angular.module.ngMock.$exceptionHandler","shortName":"$exceptionHandler","type":"object","keywords":"$exceptionhandler $exceptionhandlerprovider angular api configuration errors for implementation information into logs mock module ngmock object passed rethrows see that"}, -{"section":"api","id":"angular.module.ngMock.$exceptionHandlerProvider","shortName":"$exceptionHandlerProvider","type":"object","keywords":"$exceptionhandler $exceptionhandlerprovider $log allows and angular any api application are assertempty assertion bug case configures defaults desirable error errors fail for handler implementation into later log logging make means method mock mode module ngmock object operation passed reset rethrow see sets sometimes stores test tests that the there these this throw typically will"}, -{"section":"api","id":"angular.module.ngMock.$httpBackend","shortName":"$httpBackend","type":"object","keywords":"$http $httpbackend $injector $new $scope a-token about aftereach algorithm all allow allowing allows alternatively always and angular any api apis application appropriate are array arrived assert assertions asserts async asynchronously auth authentication authorization backend backend-less because been beforeeach behavior below body both but call called calls can care case cases certain change check class clause code common containing content control controller count create creates current data define defined definition definitions delete dependencies dependency development didn doesn don during dynamic e2e each easy end end-to-end error etc evaluated exception execute execution expect expectation expectations expectdelete expected expectget expecthead expectjsonp expectpatch expectpost expectput explicitly external fail fake fetch first flush flushed flushes flushing follow following for from function get gets handled hard has have having head header headers how http https implementation info inject injection instance jsonp just let made maintain make makes match matched matters message method mock module more mozilla msg multiple multiple-phase mycontroller need needs new ngmock ngmocke2e not now number object order org our outstanding particular pass patch pending please post pre-trained preserved preserves preserving production programming provide put quickly real really reason receives request requests required resetexpectations resets respond responds response responses result return returned returns reuse run same savemessage saving scope search see send sending sends sent sequential server service set shortcuts should sign some specified specifies specify static status still success suitable synchronously table takes test testing tests that the their them there they this those thrown throws thus time tobe token trained true two typically undefined under unit url usage use used user userx using var verifies verify verifyexpectations verifynooutstandingexpectation verifynooutstandingrequest via want was wasn way ways were what whatever when whendelete whenget whenhead whenjsonp whenpost whenput where whether which while width wikipedia will with without won would write wrong xhr xxx you your"}, -{"section":"api","id":"angular.module.ngMock.$log","shortName":"$log","type":"service","keywords":"$log all angular api are array arrays assert assertempty each empty error exception exposed for function gathers have implementation info level level-specific log logged logging logs messages method methods mock module ngmock per present property reset service that the these thrown warn"}, -{"section":"api","id":"angular.module.ngMockE2E","shortName":"ngMockE2E","type":"overview","keywords":"$httpbackend angular api contains currently e2e end-to-end for mock mocks module ngmocke2e one only overview present suitable testing the there this which"}, -{"section":"api","id":"angular.module.ngMockE2E.$httpBackend","shortName":"$httpBackend","type":"object","keywords":"$http $httpbackend additionally adds afterwards and angular any api apis app application applications array automatically backend backend-less behavior being body bootstrap bypass can category certain closely configure containing control create creates current data defines definition delete depends desirable developed development don during dynamic e2e end-to-end etc fake fetch files flush flushes for from fromjson function get handled handler have head header headers how http implementation info instead interact issue its jsonp like list made manually match matched matching method methods mock mocked module modules more myapp myappdev new ngmock ngmocke2e object often opposed optionally out pass passthrough patch phone phone1 phone2 phones please post push put real reason receives remote replaced request requests respond response responses return returned returns run scenario see server service set setup shortcuts simulating specific static status suitable takes templates testing that the this through true unit unit-testing url use used via want webserver when whendelete whenget whenhead whenjsonp whenpatch whenpost whenput will with xhr xmlhttprequest you your"}, -{"section":"api","id":"angular.module.ngResource","shortName":"ngResource","type":"overview","keywords":"angular api module ngresource overview"}, -{"section":"api","id":"angular.module.ngResource.$resource","shortName":"$resource","type":"object","keywords":"$action $charge $http $inject $resource $save abc above access action action2 actions activities activity activityid actor actual after all allows and angular any api appended are array arrives assigned automatically available becomes behaviors bound buzz buzzcontroller callback calling came can card cardid cards case charge class client collection com comments contains content could count create created creates credit creditcard crud custom data declaration default define definition delete depending destination each easily empty example excess execution existing expandreplies expect extend extended extracted factory false fetch first float following font-size for format from function get getresponseheaders gets getter given googleapis googlebuzz greet has hash having header headers hello high-level href html http https immediately important instance instanceof instances interact invoke invoked invoking isarray item items itself jsfiddle json json_callback jsonp key keys let lets level like links look looks low mapped margin-left max-height means method methods mike model module most name need never new newcard ng-click ng-controller ng-model ng-repeat ngresource non non-get noting number object once one onto operations optional optionally org other our overridden paramdefaults parameter parameterized parameters params passed perform populated post postdata pre-bound prefix prefixed present profileurl prototype provide put putresponseheaders query re-renders read realize reference remove rendered rendering replies reply request resource response results retrieve returned returns rewrite right salutation save saved search section see server server-side service set should showing since smith sources specified src static style success support template that the then these this thumbnailurl toequal trick true type update url useful user userid usually valid value values var view well what when where which wikipedia with without worth write you your"}, -{"section":"api","id":"angular.module.ngSanitize","shortName":"ngSanitize","type":"overview","keywords":"angular api module ngsanitize overview"}, -{"section":"api","id":"angular.module.ngSanitize.$sanitize","shortName":"$sanitize","type":"service","keywords":"$sanitize $scope all angular any api are back binding browser can color cols ctrl div element enter escape escaped escaped-html expect filter filtered function here however html html-filter html-unsafe-filter inline input into make means module more new ng-bind ng-bind-html ng-bind-html-unsafe ng-controller ng-model ngsanitize obscure onmouseover our parser parsing possible properly pwn3d raw recognized returned rows safe sanitize sanitized sanitizer serialized service should since snippet some strict string style textcontent than that the then this through tobe tokens typical unsafe update valid which whitelist without won would"}, -{"section":"api","id":"angular.module.ngSanitize.directive.ngBindHtml","shortName":"ngBindHtml","type":"directive","keywords":"$sanitize and angular any api binding creates current directive docs element evaluate evaluating examples expression expressions for guide innerhtml into module ngbindhtml ngsanitize result sanitize see service that the will with"}, -{"section":"api","id":"angular.module.ngSanitize.filter.linky","shortName":"linky","type":"filter","keywords":"$scope address and angular another api binding cols ctrl email enter escaped-html expect filter finds ftp function href html html-linkified http input into linkify links linky linky-filter mailto module more new ng-bind ng-bind-html ng-controller ng-model ngsanitize not one org plain pretty rows should snippet some supports text the them tobe turns update urls with without"}, -{"section":"cookbook","id":"index","name":"Cookbook","shortName":"Cookbook","type":"overview","keywords":"able abstractions across add advanced advancedform aids ajax allowing anchor and angular api app application applications apps are available away basic behavior bidirectional binding bread but butter buzz changes changing classic collection common communicate controller controllers cookbook creates data deep deeplinking demonstrates dependency design detection dirty disabling displaying dom easy editing eliminating emailing errors example exist external features first for form forms from full-page get global hello helloworld here implement initialization initialized injection instead its level likely linking links lived loads long maintainability makes model module multi-page must mvc navigates never next objects order overview own page particular pattern perils possible pre-bundled presentation prevent problem project providing reloading reloads resolves resources responsive reverting safeguards screen screens send separate separation services show simplest single solve specially specific state submit such tailored taking testability that the this through thus tic-tac-toe time-tested tries typical update url urls useful user uses using validation view way web welcome what which will with within without world you your"}, -{"section":"cookbook","id":"advancedform","name":"Cookbook: Advanced Form","shortName":"Advanced Form","type":"overview","keywords":"$invalid $scope addcontact address advanced and angular anytown are attr back basic being button buttons cancel change changes city click common contact contacts cookbook copy debug detection dirty disabled element enable enabled enter equals errors example expect extend features for form function here href include input internal invalid iscanceldisabled issavedisabled john length line1 main master model models myform name ng-click ng-controller ng-disabled ng-model ng-pattern ng-repeat notice one only original other overview phone presented preventing pristine push removecontact required return reverting reverts save should shows size smith something splice state submission such text the there things tobefalsy tobetruthy toequal two type updates user userform val validation value var view zip"}, -{"section":"cookbook","id":"buzz","name":"Cookbook: Resources - Buzz","shortName":"Resources - Buzz","type":"overview","keywords":"$inject $resource activities activity activityid actor and angular api are attach background-operations behavior buzz buzzcontroller callback can class click com comments content cookbook count data div element example expand expandreplies expect external factory fetch float font-size for function get give google googleapis googlebuzz has help href html http https item items json json_callback jsonp links margin-left max-height name names ng-click ng-controller ng-href ng-model ng-repeat ng-src object overview params profileurl prototype provide rendered replies reply resource resources retrieve right style templates that the them then this thumbnailurl tobegreaterthan urls use used userid which with xit you"}, -{"section":"cookbook","id":"deeplinking","name":"Cookbook: Deep Linking","shortName":"Deep Linking","type":"overview","keywords":"$add $compileprovider $inject $location $remove $route $routeprovider $scope alert allows also and angular angular-sanitize anonymous any api app appcntl application appropriate are assign associated assumptions background-color behavior blue bookmarked bookmarks bootstraps border boundary but can cancel case causes change changed changes changing chrome class click color com common config consist consists construct constructed contact contacts controller cookbook copy css current deal deep deeplinking define defined deps described details difference directive divided does each easy edit element email encode enter etc example expect footer for force form from function greet has have hello here home href html implement index information initialization initialize input instantiated instantiates into later like line linking loads make makes maps margin model module most multiple name navigate newly ng-bind-html ng-controller ng-view ng:click ng:model ng:repeat ngsanitize ngview not notice overview padding page partial partial-info partials particular path person programatically proper refer required restored routes routing same save scenario scope screen screens script service services sets settings settingscntl several should show shows simple single snippet solid something state style sufficient table template text that the then these things this tomatch two type url useful user using very view views visible visit watches way welcome welcomecntl when whether which while white widget will with would you your yourname"}, -{"section":"cookbook","id":"form","name":"Cookbook: Form","shortName":"Form","type":"overview","keywords":"$compileprovider $rootscope $scope abc add addcontact adding address allow and angular anytown api application are array available better blank both build can city class classname click clicking contact contacts controller cookbook data data-bound debug debugging digits directive directives div element email enter entering example expect field for form formcontroller forms from function gather going guide have how href included initial initialized input inputs into items john json leaving length line1 link main make model module name new ng-click ng-controller ng-model ng-pattern ng-repeat ngcontroller non not notice off operations org overview phone present prop purpose purposes push read reason refer reflected remove removecontact required scope should show shows simple simply size smith splice state strives text the them then these things this tomatch trivial type understand updated user using validate value view web what which will with write xxx you your zip"}, -{"section":"cookbook","id":"helloworld","name":"Cookbook: Hello World","shortName":"Hello World","type":"overview","keywords":"$compileprovider $rootscope $scope and angular any api binding binds bootstrap bootstraps bound brace change changes concept cookbook curly data databinding directive double enter enters environment event events expect field firing for function greeting guide hello hellocntl implicit input listener look module name need ng-controller ng-model note notice overview presence reflects registration root scope script should source tag take templates text that the things through toequal type user value variable when which widget world your"}, -{"section":"cookbook","id":"mvc","name":"Cookbook: MVC","shortName":"MVC","type":"overview","keywords":"$index $location $rootscope $scope $watch above all allows and angular any api are available back because behavior between black board border browser button call calls can cell cellstyle center changes changing class clean click code col connection controller cookbook copy cursor deep-linking defined diagonal droppiece easy element example execute expect for foreach function functions game grade grafted has hash height html injected instantiate instantiated into invokes isolation javascript join just listener logic makes middle model module mvc needed next nextmove ng-click ng-controller ng-repeat ng-show ng-style notice one onto overview piece play player pointer projection properties push readurl reference rendering reset return row rows same scope search see separation set seturl share should simply since solid split state steps still stored style template test testable text text-align that the there things this tictactoecntl toequal undo url value var variable vertical-align very view when which width will winner without won"}, -{"section":"guide","id":"index","name":"Developer Guide","shortName":"Developer Guide","type":"overview","keywords":"about angular apps are auto_bootstrap automatic before bootstrap both check come compiler completely component controller controllers creating creating_services dependencies dependency details dev_guide develop developer directives documents filters following forms getting guide here how html initialization initializing injection internals learn managing managing_dependencies manual manual_bootstrap may misc model mvc objects one out overview place relatively returning right scope scopes service services started templates testing testing_services the tutorial understanding understanding_controller understanding_di understanding_model understanding_scopes understanding_services understanding_view unfamiliar use using using_di_controllers view want web welcome with you"}, -{"section":"guide","id":"dev_guide.overview","name":"Developer Guide: Overview","shortName":"Overview","type":"overview","keywords":"$10 $19 $compileprovider $scope _expression_ _really_ _you_ about above add addchild adding affected ajax all allowfullscreen allowing allows allowscriptaccess almost along also alternatively although always amount and angular angularjs another answer any api apis app application applications approach apps are around aspect assists attribute authoring auto auto-injected automated automatically back basic been behind belief better bidirectional bind binding bit blank boilerplate bonus bootstrap borders both bound braces browser building built built-in built-ins business but call callbacks can cause change changes class client client-side clutters code coding color com combination comes comfort coming common compiler complex component components consider control core cornerstone cost could create creates crud cumbersome curly currency cycle data declarative declaratively decouple deeper demonstrate dependency-injection depends describe describes describing design designer designing details dev_guide develop developer developers developing development different difficult difficulty directive directs disappears display displaying does doesn dom don double double-curly dramatically dynamic early easier easily easy edited either eliminates enough enter entire equal erm error-prone errors evaluated example excellent executes existing expand expect expressing expression extends extensible fantastic far features feedback few field fields filter filters finally fine first flow following for forest form format formatting four framework freed frees from full function functions get give given going gone good google got greater guice guide guides gwt hard has have height hello helpful here home homing hours how html http https hundreds idea immerse imperative implement implementation importance improves includes indeed initialization initialize input instant integer integrate internal into introductory invalid invoicecntl its itself javascript journey jquery july just label leave leaving let level libraries library life like line list listeners live load loaded logic long look looks lot lots low majority make makes making manipulate manipulating manipulation many markup marshaling may might min model model-view-controller modify module money monitored more most movie much multiply mysterious name names need never new ng-app ng-controller ng-model ngapp ngbind ngmodel nice normal not notation note noticed now number object occurred one only operations org others out output over overall overview page pain parallel parent part parts pattern perceive perhaps philosophy place plumbing point points possible powerful presentation preview process programatically programmatic progress provide provides put qty quantity quickly rather read really reasons red reduces reflected refreshing regard registering removes removing required resulting returning reuse round run runs same saving say scenes see server services setclass sets settext short shortcut should show side sides simple simply since single sites software some source specify spent src started state structured style substantial subsystem such suffice sum sweet syntax system systems tag tags talk tasks teaches technology template templates templating testability testing tests text than that the them then there these they thing things think this those thought thous thrill thrilled through time times toequal together tons too tools total traditional trees tricks trip trivial true truth try turn two-way type typically uis updated use user users uses using utility validating validation validators value var variables vastly versus very view vocabulary walk want wanted was watch way web well what when where which while why widget widgets width will wiring with within without work working world would write writing written yes you your yourself youtube"}, -{"section":"guide","id":"dev_guide.bootstrap","name":"Developer Guide: Initializing Angular","shortName":"Initializing Angular","type":"overview","keywords":"add addition alias and angular angular- another are auto_bootstrap automatic automatically bootstrap called choose chose com comes compatibility compile compressed consists could create creating debug debugging declaration declaring define dev_guide developer development directive directives doc domain either example explorer file flavor flavors following follows for form fully guide how html http human-readable info initialization initialize initializing internet load loading manage manual manual_bootstrap map may min more name namespace namespaces need ng-app ng:something ngapp not obfuscated older org overview own page please process production properly qualified read ready related render script set should simplest simply specify specifying src style suitable tag targeting tell templates than that the this topics two unique use version versions way when whether which whole write xhtml xmlns you your"}, -{"section":"guide","id":"dev_guide.bootstrap.auto_bootstrap","name":"Developer Guide: Initializing Angular: Automatic Initialization","shortName":"Automatic Initialization","type":"overview","keywords":"$compile add additional all also and angular api apis application are ask attempt automatic automatically awesomemodule binds bootstrap browser can children compile compiler compilies container containing creates dev_guide developer directive directives document does dom domcontentloaded during element elements entire event example fields filers for found framework from global guide here high-level html initialization initialize initializing insert into its load loads looks manage manual manual_bootstrap module modules more needs ng-app ngapp object one only other overview page parts placing portion process related runs script services some src tell that the then this topics use using variable waits want what when would you your"}, -{"section":"guide","id":"dev_guide.bootstrap.manual_bootstrap","name":"Developer Guide: Initializing Angular: Manual Initialization","shortName":"Manual Initialization","type":"overview","keywords":"$compile adding after angular angularjs anywhere api attribute auto_bootstrap automatic automatically bootstrap call cases compiler container contrast control delay dev_guide developer document domcontentloaded done element event fires from function guide handle however html http initialization initialize initializing just let majority manage managing manual manually method module need ng-app ngapp node now org overview own page ready related right same show special-purpose src that the this topics use vast want with won you your"}, -{"section":"guide","id":"dev_guide.mvc","name":"Developer Guide: About MVC in Angular","shortName":"About MVC in Angular","type":"overview","keywords":"about acquired along and angular appeared applications basic behind better between building client-side component components controller coupling data dependency design dev_guide developer developing different distinct easier encourage explain first following greatly guide has how http incorporates injection into its logic loose maintain makes meaning model model-view-controller more mvc org original over overview pattern presentation principles separate services shades since software structured summarized testable the these topics understanding understanding_controller understanding_model understanding_view view way web while wikipedia with years"}, -{"section":"guide","id":"dev_guide.mvc.understanding_model","name":"Developer Guide: About MVC in Angular: Understanding the Model Component","shortName":"Understanding the Model Component","type":"overview","keywords":"$compileprovider $scope _model_ about above all and angular any api application applications apps array arrays assign assigning assignment ball bar become being called can child cloud code collection commonly component constructs contain contains context controller controllers create created creates creating current data declaration depending dev_guide developer direct directive discussion documentation each either elements eligible entire entities entity example explicitly expression expressions fluffy following foo for form from function garbage guide identifier illustration img implicitly initial input item iterator its javascript make model models module most must mvc myctrl name ng-click ng-init ng-model ng-repeat nginit ngrepeat ngrepeater not object objects occurs one only operator other overview phone phones png primitives processing properties property query reachable real recommended refer reference referenced references referencing related representing requirement scope scopes select set shows simple single src stale stops suitable template templates term textarea that the these this topics toy understanding understanding_controller understanding_view use value view ways when with you"}, -{"section":"guide","id":"dev_guide.mvc.understanding_controller","name":"Developer Guide: About MVC in Angular: Understanding the Controller Component","shortName":"Understanding the Controller Component","type":"overview","keywords":"$compileprovider $controller $new $rootscope $route $scope about above across add added adding affects all allowed also although always and angular any api app application applied applies apply are argument arguments assigned assigning assignment associate associating augment augmented automatic automatically available baby babyctrl babyscope based because become beforeeach behavior being belong below best between binding body both box business but button buttons called can capital case child childctrl children childscope chili chilispicy clicked code common component components consisting constant construct constructors contain contains controller controllers controls convention conventions correctly could create created creates creating ctrl customspice data-binding databinding default defined defines demonstrated dependency depending describe dev_guide developer direct directive directives directly discussed does doesn dom earlier element encapsulate encapsulating ends evening event example examples excluding exist existing expect explicitly expressions filtering filters first following food for form formatting forms from function functions general gingerbreak greeting greetingctrl guide habanero handler hard have hierarchy hola hot how illustrate implicitly inheritance inherits initial injecting injection input inside instances instantiate instantiated instead interacts interchangeable interchangeably into invoked invoking involves its jalape jalapeno jalapenospicy javascript just keep kind known lava length let letter life-cycle little logic longer look mainctrl mainscope manage manipulation manual manually many mattie means mentioned message method methods might mild model models modifies module morning most much mvc mycontroller name named naming need needed needs nested never new ng-click ng-controller ng-model ngclick ngcontroller nikki not note notice now object objects offers one only operator option other otherwise our output over overview own pasilla pass passes perform plain presentation previous primitives properties property prototype prototypical putting rather referred refers related replaced result return root run same scope scopes second section sections selected sense service services set sets setting shadows shared should shouldn shown significantly simple single slim spice spiceiness spiceness spices spiciness spicy spicyctrl standard starts state stateful stateless string take takes tell template templates test testability testing that the then there these things this three through timeofday tobe too topics try two type typically understanding understanding_model understanding_view updated updates use used using value values var variation versions very via view wasabi way ways well when which will with work works you your"}, -{"section":"guide","id":"dev_guide.mvc.understanding_view","name":"Developer Guide: About MVC in Angular: Understanding the View Component","shortName":"Understanding the View Component","type":"overview","keywords":"$compileprovider about after and angular api associated based bindings both browser call can component controller data-binding dev_guide developer directive directives dom form function functions guide has img implementation information knowledge knows loaded model module mvc ngcontroller ngview occurs overview png related rendered src such template the these this through topics transformed two-way understanding understanding_controller understanding_model view ways where"}, -{"section":"guide","id":"dev_guide.scopes","name":"Developer Guide: Scopes","shortName":"Scopes","type":"overview","keywords":"$apply $compileprovider $eval $rootscope $watch addition additional all also and angular any api apis apply are between bindings can changes communicate compilation components context contexts controller created creates data data-bindings dev_guide developer directive during elements evaluated example expressions for functions get guide html input instances interested internals javascript link linkage linked mechanism medium model model-view-controller module ngbind notify object objects overview paradigm process property provide provides providing registered related scope scopes serve system template the think this through together topics understanding understanding_scopes useful view watch watching which with within you"}, -{"section":"guide","id":"dev_guide.scopes.understanding_scopes","name":"Developer Guide: Scopes: Understanding Scopes","shortName":"Understanding Scopes","type":"overview","keywords":"$compileprovider $rootscope above along and angular any api are array arrays attached attaches automatically based bindings binds built called can changes child closest code controller created creates data dev_guide developer directive display displayed doc-example-live doesn dom during each element elements example expect expression find finds following for from function functions further gail guide hank has have hierarchy how html igor illustration img infrastructure inherits initialization initialized internals items its kai list looking looks misko model module name names nested new ng-init ng-repeat ngrepeat object objects observe original outside overridden override overview page parent parents png pre primitives properties property related repeater repeats respective root row scope scopes serves should shows snippet source specified src template text that the their this tobe toequal topics tree understanding until upstream use value values view walks when where which with you your"}, -{"section":"guide","id":"dev_guide.scopes.internals","name":"Developer Guide: Scopes: Scope Internals","shortName":"Scope Internals","type":"overview","keywords":"$apply $compileprovider $defer $destroy $digest $eval $http $location $new $provide $rootscope $watch $watch-er $watch-ers about access action after afterwards against all allow allows already always ancestor and angular angularized any api apis application applications applied are argument assert associated asynchronous attach attached automatically available back because before behavior binding both built-in but button call callbacks called calling calls can cases categories cause change changes characteristics check checked child clicking code collector come comes compilation compile compiler components comprise context control controller controllers correct correctly corresponding create created creates creator current custom cycle cycles data decide defaulting define demonstrates dependency dependents describes design destroy destroyed destruction detail detected dev_guide developer digest directive directives docs does doesn doing dom double-curly during each effects element elements end enough entire environment etc evaluate evaluated event events every example execute executes execution expect explicitly expose expression expressions external extra fall fetch find fire fires firing following for framework free from full function functions garbage get gets getting given grandparent granularity greeting guide handlers happen happens has have having hello hide how however html immediately implementation implicitly including information inherit inheritance inherits inject injected injection inputs instances instead interact interactions intercepts internals into invoke isolate its javascript kinds life listener listeners longer made magic make managed managing manually matches may means memory method methods might mimic mimics mock mocks mode model model-view-controller models module more most must mutate mutation mutations mvc name necessary need needed needs nested nesting new ngclick ngcontroller nginclude ngrepeat normal not notified object objects observation observations observe observed observing one only other outside over override overview own parent parentscope parts passed pattern phase play process propagate propagates propagating propagation properly properties property provide providers providing pushes read realm reason received reclaimed recursively references reflected register registering registration related released remove request reside response responsibility results retrieve right root run-time same scope scopes section see sense server service services set shared should shown side similarly since situations some spec started stop such super-heroic synchronous system template templates test tests that the their them then there these think this those through throughout time timer timers tobe toequal topics transitions trigger triggered two type typical typically undefined understand understanding understanding_controller understanding_scopes unit-testing unit-tests unnecessary update updated updates updating use used user using usually value var via view watch watcher watches way what when whenever whether which while widget widgets will with within work worry wraps write writes written xhr xhrs yet you your"}, -{"section":"guide","id":"dev_guide.compiler","name":"Developer Guide: Angular HTML Compiler","shortName":"Angular HTML Compiler","type":"overview","keywords":"$compile all allowing also angular api application applications apps are browser building but can compilation compiler core create default dev_guide developer directives dom domain-specific dynamic element extend for generic guide how html into involved its language module new overview page place processes provides related server specific static takes testing testing_dom_element that the them topics transform transformations types understanding understanding_compiler useful web works you"}, -{"section":"guide","id":"dev_guide.compiler.testing_dom_element","name":"Developer Guide: Angular HTML Compiler: Testing a New DOM Element","shortName":"Testing a New DOM Element","type":"overview","keywords":"$compile angular api come compiler dev_guide developer dom element guide how html module new over overview related testing the topics understanding understanding_compiler works"}, -{"section":"guide","id":"dev_guide.compiler.understanding_compiler","name":"Developer Guide: Angular HTML Compiler: Understanding How the Compiler Works","shortName":"Understanding How the Compiler Works","type":"overview","keywords":"$compile $rootscope allow allows and angular any api application applying are attached attachment behavior bind browser building can changes clones collects compilation compile compiler created declare depth-first details dev_guide developer directive directives dom domain each effect element elements example executes extend for function guide how html keyboardshortcut language linking live makes may model module new node order orders overview philosophy presentation priority proceeds process quickly reflected related responsible result root say scope see since single source specific starts structure tabpanel teach template testing testing_dom_element the their them this topics tricks truth understanding use used useful view visits when with works"}, -{"section":"guide","id":"dev_guide.e2e-testing","name":"Developer Guide: E2E Testing","shortName":"E2E Testing","type":"overview","keywords":"$location able about above addition after all almost also and angular any api application applications are array assert asserts assigned attr available avoid becomes bees before behave below binding bindings block blocks browser bugs built but button buzz call called calling can catch certain check checkbox checks click clicking clicks client code column com come comes commands compiler complexity comprised console contain continues correctness count css current currently defined describe describes destination developer done dsl duplicating dynamic dynamically e2e each easy element elements end enter entering enters example excuse executed executes execution expect expectation expectations expression fail failed fails features feel field filter filtertext first following for frame from function functions future futures get given google great grow guide hash have health height help helper here how href html http https img index innerheight innerwidth input interaction interactions into item items jacksparrow javascript jquery key label language link list listed lists loaded loads location made makes manual many marks match matcher matchers matching may method methods module more multi name navigate navigateto needs negation new next no-help not notice number object offset one only option options ouput outerheight outerwidth output overview page pass passing path pathname pause pauses picks png position power problem prop query radio reason reduced refreshes regardless regressions reload rely repeater requirements result results resume return returned returns row rows run runner satisfies scenario scenarios scopes scrollleft scrolltop search seconds section select selectedelements selection selector selects set should simple simulates single size sleep solve something source specific specifically specified src starts state statements stream strong strongly tell test testing tests text that the then there these they think this toequal turn typed unknown unrealistic until url use used user using val value value2 values verifies verify very when where whether which width will window with write written you your"}, -{"section":"guide","id":"dev_guide.expressions","name":"Developer Guide: Understanding Angular Expressions","shortName":"Understanding Angular Expressions","type":"overview","keywords":"$30 $compile $document $eval $filter $parent $scope $window access accidental according act actual adam add addexp addfuture addfutureaction adding additional additions against alert alerttext all allow allows also and angular api application arbitrary are arguments array assignments attribute attributes augmentation augments because become before behavior behind below binding bindings bugs built-in but calculate call called can canned cannot case chain change choose class click clutter cntl1 cntl2 code collide collision collisions colon-delimited common compiler complicated conditional conditionals consider contacts control controller controllers convert core correct could count create creates current data databinding decimal default define defined delegate dev_guide develop developer developers did didn differences different differentiate display displaying does doesn done element embed enter entirely equivalent etc eval evaluating evaluation evaluations evaluator even example example2 example3 exception existing exists expect expr expression expressions exprs extend extensions extra filter filter1 filter2 filters flow following for forgiving format formatted frameworks friend friends from function further future general global greet guide hand harmony have hello here href html human-readable input instead intentionally intermediary into invoking its javascript john julie language length like limited list locale logic look loop loops make makes mary method methods might mike mock mockwindow module more much must name names namespace need needs neither new ng-bind ng-click ng-controller ng-init ng-model ng-repeat nor not nothing null number object objects often operators order other others our over overview pass passes philosophy phone place points prefix prefixing presenting prevent primarily problem properties property prototype purpose push raw reason refer related removeexp repeater reserves reserving response return returns reverse richness row run same scope search searchtext sense server set should show significance similar similarly simple simply size soon source splice state statement statements string subtle such syntax table takes tbody templates tempting ternary testing text than that the them then there these they think this through throw throws tobe toequal topics try type types undefined understanding unlike uppercase use used user user-friendly uses using valid value var version view views vocabulary waiting want wasn way what when where which while who will window with without wondering work world worse would write yet you"}, -{"section":"guide","id":"dev_guide.forms","name":"Developer Guide: Forms","shortName":"Forms","type":"overview","keywords":"$apply $compileprovider $dirty $error $formatters $invalid $parsers $scope $setvalidity $setviewvalue above achieve add addition adds after agree agreesign all allow allows and angular api app application are array attribute attrs augment available background background-color basic because before behavior below better bind binding blur both bound browser browsers but button call calls can cases change changes checkbox circumvented class classes click client-side collection common consider consume contains content contenteditable control controll controller controls conversion convert copy correct create css css-form ctrl cursor custom d0d0d0 data data-binding defining dependency developer directive directives dirty disable display distracted div dom done e-mail each easily edit elements elm else email enabled ensures enter equals error event example execute experience extend fa787e failing false features feedback female first flexibility float float_regexp following for form form-example1 form-example2 format formcontroller forms fraction from function functions gender get gets good grouping guide has here hold how however html html5 implement implementation implementing implements implies important info init input inside instance instant instead integer integer_regexp interacting interacts internal into invalid isunchanged its json keep key length link listener load male master max maxlength messages method min mind minlength model module more most must name native necessary need needs ng-click ng-controller ng-dirty ng-disabled ng-invalid ng-model ng-pristine ng-show ng-valid ngmodel ngmodelcontroller not note notified novalidate number occur occurs one only opportunity optionally order other overview own parsefloat parser parses passed pattern pipe-lined pipelines places plays pointer primitives provide provides providing published purpose pushing radio range red related render rendered rendering replace require required reset responsible return role satisfy save scope second secure see select server-side services should shown shows sign similar similarly simple simple-form since size smart-float smartfloat some specifies standard state still string styling such sufficient synchronizing test text textarea that the these they this through thus title together true trusted turn two two-way type types uemail uname undefined understanding unshift until update updated url use used user useragree uses using usually valid validates validation validator validity value var view viewvalue want way well what when whenever whether which while with work would write you your"}, -{"section":"guide","id":"dev_guide.i18n","name":"Developer Guide: i18n and l10n","shortName":"i18n and l10n","type":"overview","keywords":"$1000 $compileprovider $filter $locale abbreviated about above abstracted abstracting accordingly account actual adapting additionally all allows also always and angular angular_de-ge angularjs anticipate any api app application applications apply approach approaches apps are automatically balance because binding bits both bound browser can case cases cat changes client code codes com commonly components computer concatenating configure consists containing contains content correct correspond country create css cultural cultures currency currently custom date datetime default depend depending described desired developer developers developing development different directive display displaying disregard dollars each easily either en-au en-us enable end example examples extra extreme few file files filter filters find fine folder following for format formats from generic geographical german github gotcha gotchas greatly guide have hence her here how however html http https i18n icu icu-project ids include including index index_de-ge information instead internationalization internationalizing into japan javascript jump june junio keep l10n language languages length level like likely linguistic list loaded local locale locale-specific locales localizable localization localized localizing look make managed market may means might min mind module more most need needs neither ng-app ngpluralize nor not number one only optional org other out overlap override overview own package page pages parameter particular parts pluralization political pre-bundle pre-bundled pre-configured prepare process products provide provided providing readers really region rely requires rule rules running same script second see separates serve server service sets settings should show showcase shown slower someone something spanish specific specified specify specifying src starts straight strings such support supported supports sure symbol testing text that the their there these they this thorough time timezone translated translations two understood upset usability usd use used uses using valid value various vary viewers views want way web website when which who will with would you your zh-cn zone"}, -{"section":"guide","id":"dev_guide.introduction","name":"Developer Guide: Introduction","shortName":"Introduction","type":"overview","keywords":"absent abstraction action adding and angular app application applications apps automatically back because been before between binding bookmarking both brings browser but buttons can care case change client-side coding compiler components concentrate course css data data-binding dependency designed develop developer developers developing development dom ease easier entirely error-prone ever every example existing extensible far faster feature features follow for forward from guide handles have history however html implemented important including increasing injection input introduction involved javascript less level leverage listeners load logic long long-established low-level lower-level make manipulation many might migrating more most much normally notifiers objects older one operations overview page part presentation primarily pure relatively repetitive round-trip same sense separation services setting simplifies single-page sophisticated subset substitutable supports takes tasks techniques technologies technology templates testing than that the these this time together too use using validation want way web were wiring with work works would wouldn written you"}, -{"section":"guide","id":"dev_guide.templates","name":"Developer Guide: Understanding Angular Templates","shortName":"Understanding Angular Templates","type":"overview","keywords":"$compileprovider $interpolate $route above access add addition along also and angular angular-specific api app are attribute attributes augmented augments bar becomes behavior bind bindings body brace browser built-in button buttontext can changefoo code complex component conjunction consists contained containing controller controls css curly curly-brace data declarative declaring dev_guide developer direct directive directives display dom double dynamic eight element elements example existing expression expressions file files filter filters following foo for form formats forms from guide html include index information input into javascript just lets located made main markup model module more multiple mycontroller ng-app ng-click ng-controller ng-model ngcontroller ngview notation note one overview page partials reference related rendered represents reusable sees segments separate service seven shown shows simple single-page snippet specification src standard static steps string tag tags technique template templates that the these this topics transform tutorial types understanding use user using validate value view views which widget with within wrapped you your"}, -{"section":"guide","id":"dev_guide.templates.css-styling","name":"Developer Guide: Templates: Working With CSS in Angular","shortName":"Working With CSS in Angular","type":"overview","keywords":"$compileprovider angular api application applies changed class classes css dev_guide developer did directive does element forms guide have input interaction interacts module new ng-dirty ng-invalid ng-pristine ng-valid not notpass once overview provide related sets styling templates that the these this topics used useful user validation which widget with working your"}, -{"section":"guide","id":"dev_guide.templates.databinding","name":"Developer Guide: Templates: Data Binding in Angular","shortName":"Data Binding in Angular","type":"overview","keywords":"additional after all along always and angular any application apps are automatic automatically because between bind binding browser can change changes class classical code compilation compiled completely components constantly controller data data-binding dependency dev_guide developer diagram different direction directives dom easy first for from greatly guide has html illustrated img immediately implements instant into isolation just lets live makes markup means merge model most not occurs one only overview png produces programing projection propagated reflected reflects related right say scopes second sections separated simplifying simply single-source-of-truth snap src state step syncing syncs systems template templates templating test testing that the they think this times together topics treat unaware uncompiled user versa vice view way web when with without works worse write you your"}, -{"section":"guide","id":"dev_guide.templates.filters","name":"Developer Guide: Templates: Understanding Angular Filters","shortName":"Understanding Angular Filters","type":"overview","keywords":"$filter according addition allows also angular api applying before can chain conditionally creating creating_filters css data dev_guide developer display displaying dom evaluator example expression expressions filter filtered filters for format formatted formatting guide handle have like locale might modify module name needs object output overview pass passes related simply styles such tasks templates that the this through topics understanding uppercase user using using_filters value you"}, -{"section":"guide","id":"dev_guide.templates.filters.creating_filters","name":"Developer Guide: Templates: Filters: Creating Angular Filters","shortName":"Creating Angular Filters","type":"overview","keywords":"$element $filter $scope abc addition additional allows and angular any api are argument arguments assigns based binding can cba charat color compiler conditional conditionally containing creating ctrl current define dev_guide developer dom easy element enter expect filter filters first following for framework function greeting guide hello html input javascript just length makes manipulate module myreversemodule ng-controller ng-model object olleh optional out overview own passed passes related return reverse reverses sample scope should string templates text the these this toequal topics touppercase type understanding upper-case uppercase use value var variable variables very writing you your"}, -{"section":"guide","id":"dev_guide.templates.filters.using_filters","name":"Developer Guide: Templates: Filters: Using Angular Filters","shortName":"Using Angular Filters","type":"overview","keywords":"$filter $rootscope after also and angular any api applying are argument arguments before binding bindings but can chain chained colon-delimited colons creating creating_filters data decimal dev_guide developer different digits display evaluation example examples expression expressions filter filter1 filter2 filters for format formatting guide here how many module new notice number optional overview part pass point points process related right rounding scope separated show significant some specifies syntax take takes templates that the this topics transform two type typically understanding used using values with you your"}, -{"section":"guide","id":"dev_guide.services","name":"Developer Guide: Angular Services","shortName":"Angular Services","type":"overview","keywords":"also angular api apps are been brings client-side commonly controllers creating creating_services dependencies dependency dev_guide developer feature for from guide have injecting injecting_controllers injection into key long managing managing_dependencies module most objects often overview related server service services side substitutable testing testing_services that the time together topics understanding understanding_services used using web where wired with"}, -{"section":"guide","id":"dev_guide.services.$location","name":"Developer Guide: Angular Services: Using $location","shortName":"Using $location","type":"overview","keywords":"$apply $browser $compileprovider $digest $document $location $locationprovider $observers $provide $rootscope $scope $sniffer $watch $watchers $window _escaped_fragment_ _self able about absolute absurl access according actually add addition address after again ajax all allow allows always among and angular angularjs any api apis app append application applications appropriate apps are attrs automatically available aware back bar base based basehref basically because beforeeach begin behave best bind binding bootstrap bot both break browser browsers but button call called calls can capability care cases cause causes caveats chain chaining change changed changes changing character characters check class click clicks coalesces code com commit comparing compiler compose configuration configure connected contain content control controller conversion crawlable crawler crawlers crawling create creating current currently customizing decoded default defer defined delay depending describe developer differences different differently directive directly displaying docroot document does doesn dom domain don during each earlier either element elm empty empty-corner-lt enable enabled encode encoded encoding encouraged enough entire entry equivalents etc event everything everywhere example examples exposes extra facilitate factory fake fakebrowser fall fallback false features file fireurlchange first flag following follows for form format forward fragment frees from full function future general get getelementbyid getter getters google guide happens has hasbang hash hashbang hashbang-mode hashbangcntl hashpath hashprefix hashsearch have having head here history host href html html5 html5-hashbang-example html5-mode html5cntl html5mode http https ietf images img immediately implement index indexed indexing information initenv initial initurl inject input inside instances instantiated instead integrates integration interact internal into issue issues item its jpg jquery-style just keydown keypress keyup knows last lead legacy level life-cycle like link links loaded location locationpath lower lower-level main make makes making management many means meta method methods migrating missing mode modern modes modified module more mozilla multiple must mutations name navigate navigation necessary need needs new next ng-address-bar ng-controller ng-model ng-non-bindable ngaddressbar noop not note notified notify notifywhenoutstandingrequests null object observe obtains often old older once one only onurlchange open opening operation option org original others otherwise outside overview page param parameter parameters parses parsing part parts pass passed path perform phase phases please point port prefix prefixes process processes propagate properties property protocol provided provides pushed rather raw react read read-only recognize record records redirect redirection redirects reflected regular related relative release releases reload replace replaced replacing represents request require requires resets resolved responsibility retrieve retrigger return returned returns rewrite rewrites rewriting rewritten rfc rill root rules running same scope scripts search section see segments sending serve server server-side service services serviceundertest set setter setters settimeout should show side since single slash snapshots source special specified specify src starting state statement stoppropagation strongly such suitable supplies support supported supports sure synced synchronizes tag takes target technique tell test testing text than that the their them then there these this through time transparent transparently true two two-way txt type unless update updated updatehash updates url urlchange urls use used useful user users uses using val value values var versa via vice viewing want was watch watchers web well what whatever when whether which will window with without work worry would write you your"}, -{"section":"guide","id":"dev_guide.services.creating_services","name":"Developer Guide: Angular Services: Creating Services","shortName":"Creating Services","type":"overview","keywords":"$inject $provide $window ability about after afterwards alert all allergic allows also and angular annotation any api application approaches are arguments array auto begin body both but called can component config configuration constructs controllers create created creating crucially custom declaring depended dependencies dependency depends dev_guide developer directly displays each either example except factory find following for function given global guide have highly important indirectly injecting injecting_controllers injection injector injectors inside instance instantiate instantiates instantiating instantiation into its join just lastly lazily lazy length lethally make managing managing_dependencies means minification-proof mocks module more msgs multiple must mymodule name need needed nontrivial not notation note notifications notify offers one only other overview own parameter part participate passed per possible property provided pseudo-code push rarely rather read realize register registered registering related requested return service serviceid services several shinynewserviceinstance shows simple simply since singletons specified state stores swap system testable testing testing_services tests that the themselves there these they third this topics under understanding understanding_di understanding_services unless upon use useful using var very via well when where which while will win window with won words write you your"}, -{"section":"guide","id":"dev_guide.services.injecting_controllers","name":"Developer Guide: Angular Services: Injecting Services Into Controllers","shortName":"Injecting Services Into Controllers","type":"overview","keywords":"$inject $loc $location $log $scope $window above added alert allows and angular another api array below benefits but calling callnotify can case code containing controller controllers convention corresponding creating creating_services dependencies dependency determine dev_guide developer discussed don dynamic example expect explicitly factory feature figure firstmethod for from function get guide has however http ids implicit implicitly info inject injected injecting injection into javascript join language languages length let managing managing_dependencies match matter matters message minify module msgs must mycontroller myservicemodule myservicemoduledi name names need new ng-click ng-controller ng-init ng-model notify notifyservice order org our out overview parameter parameters plan property push registered related renamed return rewrite scope secondmethod service services sethash should show similar simple since specify static still strings test testing testing_services that the therefore they this toequal topics try typed types understanding understanding_services use used using val var variable very when which wikipedia will win with you your"}, -{"section":"guide","id":"dev_guide.services.managing_dependencies","name":"Developer Guide: Angular Services: Managing Service Dependencies","shortName":"Managing Service Dependencies","type":"overview","keywords":"$afterroutechange $defer $inject $log $on $provide $rootscope $route allows and angular annotate annotations api application are argument array batches batchlog batchlogmodule both built-in but can change checking console construction controllers creating creating_services current currently custom declaration declare dep1 dep2 depend dependencies depends determine dev_guide developer dropped each either every example experimental factory feature flushed for framework from function get guide here identifiers ids important inference inferred inferring inject injecting injecting_controllers injector instances into kick length log logged logs main managing memory message messagequeue messages minifiers module monitors mymodulecfgfn myservice myservicefactory names needed notation note notice null optionally order other our overview periodic property provided push queued related return routetemplatemonitor same seconds service services setting signature specify start string template testing testing_services that the their them things this topics two understanding understanding_services unless use uses using var via web well which with you"}, -{"section":"guide","id":"dev_guide.services.testing_services","name":"Developer Guide: Angular Services: Testing Angular Services","shortName":"Testing Angular Services","type":"overview","keywords":"$injector $provide $window after alert all angular api args beforeeach browser callcount clear conrollers createspy creating creating_services dependencies dev_guide developer example expect first following for function get guide inject injecting injecting_controllers instead into jasmine managing managing_dependencies messages mock module more mostrecentcall not notification notifications notify one overview real related service services should spy test testing the third three toequal tohavebeencalled tohavebeencalledwith topics two understanding understanding_services unit uses value var"}, -{"section":"guide","id":"dev_guide.services.understanding_services","name":"Developer Guide: Angular Services: Understanding Angular Services","shortName":"Understanding Angular Services","type":"overview","keywords":"$http $inject $location about above access also always and angular another api apps are because browser built-in can cannot care carry charge common controller core create creating creating_services custom define dependencies dependency dependent depends dev_guide developer dynamically example explicitly factory for framework function functions guide identifiers identify injection injector injects instantiation its javascript language level like low managing managing_dependencies mentioned module must mycontroller object operations other out overview own passed property provides provision reason related requested resolution rest service services set singletons specific start static subsystem such takes tasks testing testing_services that the this topics typed types understanding use using variables via web with xmlhttprequest you your"}, -{"section":"guide","id":"dev_guide.di","name":"Developer Guide: About Dependency Injection (DI)","shortName":"About Dependency Injection (DI)","type":"overview","keywords":"about all and angular api application applications behind book built-in com component components control cycles decouple decoupling dependencies dependency depends design dev_guide develop developer done each easier favorite for fowler from general guide has helps html http idea individual information injection injector into inversion its job life make management manages managing martin module more moving object-oriented org other out overview particular pattern provider read related responsibility see service services software subsystem supports test that the this topics understand understanding understanding_di way wikipedia your"}, -{"section":"guide","id":"dev_guide.di.understanding_di","name":"Developer Guide: DI: Understanding DI in Angular","shortName":"Understanding DI in Angular","type":"overview","keywords":"$http $inject $provide $rootscope $window _foosvc_ above after all along already alternative and angular annotate annotation annoying any api application applications apps are argument arguments array automatically available because been beforeeach behind being below benefits best better between block bootstrap break brings built-in but cache calling calls can cause change checks child code common compiles components considers construct controller controllers create created creates creating_services creation curry custom declaration declare define defined definitions depend dependencies dependency describe dev_guide developer directive does doesn done drawbacks during easily either element end equal equivalent equivivalent especially events every example examples expect experimental explicitly factory feature filters find fna fnb following follows foosvc foosvc_ for friction from function future generate get gets given guide handle has have having how identifiers identifies illustrated illustration img implemented implicitly implies important infer inference inferring information inject injected injection injector insert instance instances instantiated instantiates into its jasmine java javascript job just languages leading like likely list loads main manages many may means method minified minifiers module module1 modules more myfn name names need new ngapp ngcontroller not notation note objects obviously only our out outer over overview own part phonecat phonelistctrl png pre-processor problem proceeds property provide provider providers provides provision reason reference registered related relates resolve resort returns rewrite rewritten root scan scenes scope section see sequence service servicea servicea_ services several shadowed shadowing should shown signature single solutions some source src statically steps still subsystem such tasks template test testing tests that the them then there therefore these they thing this those through time tiresome toequal topics tostring trailing treated tries triggers turns two typed under underscores understanding use used useful user uses using var variable was way web well what when where whether which while widely widgets will with without won work you your"}, -{"section":"guide","id":"dev_guide.di.using_di_controllers","name":"Developer Guide: DI: Using DI in Controllers","shortName":"Using DI in Controllers","type":"overview","keywords":"$inject $location about additional angular angularjs annotations any api applications are argument arguments call called cause common configuring controller controllers correct dependency dev_guide developer example follows for form from function guide have here html http information injected injection injector instance instantiated instantiating instantiation into javascript know min module most mvc mycontroller needs ng-app ng-controller one org overview place property referencing reflection related responsible routes service services should simple since src stuff supply supplying takes template the then there think this topics two understanding understanding_controller understanding_di use used using ways what when with your"}, -{"section":"guide","id":"dev_guide.unit-testing","name":"Developer Guide: Unit Testing","shortName":"Unit Testing","type":"overview","keywords":"$filter abc able about above abstraction actual addclass advantage all allow almost also and angular another answer any api append application applications apply approach are arguments ask assert asserting assumptions bad basic because becomes being below binds bits body bound brittle built but call called calling calls can chance change changes class code com come comes compiler complete concerns controllers correct correctly could crated crating create created creation creator data dependencies dependency dependency-injection dev_guide developer developers did different difficult directives div document does dom don dose dowork dynamically each easier easy elements else end everything ex1 example excuse executes expect explanation expression failures fake features feel filter filters find follow for forced forget format formatting forward from function functions fundamentally further get getting global going good got grade great guide handed happen hard harmed has have having hevery hold how however html http idea implies important individual inject injection input instance instantiate intercept into isolate isolation issue its jasmine javascript javascripttestdriver kind know known language last lastly length lets like likely list location logic look look-up looking magic make makes making manipulates manipulating manipulation many may means medium method mind mix mixed mixing mock mocks mockxhr model module monkey msg much must mutated myclass mymodule name need needed needs network new no-help not nothing notice nutshell obvious often oldservicelocator oldxhr one only onreadystatechange open operator order other oue out outside overview passed passing password passwordcntrl passwordcontroller patching permanently piece pieces place power preferred present problem problematic project provide purposes pwd question random rather readable reads reason reasons references registry related remove removeclass replace requires reset resetting resort responsibility responsible resulting results return returned right same sample say scope see seem seen send separated separates server service servicelocator serviceregistry services set several shorter should simplifying simulate since singleton singletons site size solved some sort sorts span state still story straight strength strictly strong strongly such take tells test testability testable testing tests text than that the then there these they thing things think this through time toequal transform tried true try trying type typed typical unique unit units untestable uoe updating url user using usually val var variable variables very wait want was way ways weak well were what when where which while whoever why will wish with without would write writing written wrong xhr xhrmock yes you your"}, -{"section":"guide","id":"directive","name":"directive","shortName":"directive","type":"overview","keywords":"$attrs $compile $compileprovider $defer $destroy $digest $element $injector $interpolate $observe $rootscope $scope $set $transclude $watch abc able about above accept accessed accessing accessor accidentally action actions actual add addclass added advantage after against aliasing all allowed allowing allows already also always among and angular annotation another answer any anything api append applications applied applies apply are arguments array assigned associated asynchronous asynchronously attached attribute attributes attrs augment auto available background-color because become been before behavior behind below between bind binding bindings black block body border bound box break broken browser build building built but button buttons call called calling calls camel can cancel canceling case cased cases causes chance change changed changes channel characters child children class classes classname clean click clicking clobbering clobbers clone cloned clonelinkingfn clones cloning close closed code collection color combined comes comment comments communicate communication compilation compile compiled compiler compiles compiling complex complexity compliant component components concern concerned config console contain contained contains content contents contrast control controller controllers copy correct corresponding create created creates creating ctrl ctrl1 ctrl2 ctrl3 current cursor cycle data data- data-binding data-model data-ng-bind date datefilter deafult deals declaration declarative declared declares defaults deferid defined defines definition delegate dependency derived descending described description descriptions desirable destroy details developer dialog different differs digest dilemma directive directivedefinitionobject directivename directives display displays div does dolor dolorem dom domain don done dosomething down during each eacm easily efficient either element elements elemnt elm embedded empty end enough enter equivalent error est evaluate evaluated evaluation event every example examples execute executed execution exp expect expects explained expressed expression expressions extended factory fail false final fine first following follows footer for forgets form format found from full function functions further furthermore get gets getter given gives goes guide hand happens has hash hasn have hello here higher how however html http iattrs identified ielement img important including individual info information inherit initialization initialize inject injectable injected injecting injection inline-block input insert inserted inside instance instances instantiated instantiation instead instructions inter inter-communication interested interpolated interpolation into invoke invoked invoking ipsum isolate isolated isolation isomers issue items its jpg kick lack language last least lets like limits link linked linkfn linking linkingfn links list listen listener listeners live load loaded loading local locals locate log logic look looks lorem lower magic make makes manipulate many mapping match matched matches matching may means method migrates model modify module more most moved multiple must my-attr my-current-time my-dir my-directive myattr mycurrenttime mydir mymodule naive name names necessary need needed needs neque new next ng-bind ng-click ng-controller ng-model ng-repeat ng-show ng-transclude ng:bind ng_bind ngbind ngmodel ngrepeat ngtransclude ngview node none normal normalize normalized not note obeject object objects observe off often ofter old omitted on-cancel on-ok oncancel once one only onok open opened operate operation optional optionally order original other our out overview overwrite padding parameter parent parsable parse parsed part parts pass passed perform performance performed phase phases place placed point pointer porro possible post post-linking postlink pre pre-bound pre-linking prefixed prelink present prevent preventing previous priority private problem problems process producing prop properly properties property prototypically provides pseudo purposes put qui quia quickly quisquam raise raised rare rather read reading ready real realize reason reasons receives reflected register registered registering registration relatively rely removeclass removed render repeater repeaters replace replacement request require requires responsible restrict restricted restricts result return returned returning returns reusable right root rule rules run runtime safe same save schedule scope scopes second section sections see seem separation seperatly service set setup share shared short should show showing shown sibling siblings simplification simplified simply simplyfing since single skeleton slow snake solid solution solve some something sometimes sort sorted span special specific specifically specified specifies specify src stamp standard state step still stored strategies strategy string strings structure style subset such sucha summary surprise suspended systems takes tattrs teach telement template templates templateurl templating terminal text than that the their them themselves then there therefore these they this three time title tobe toequal toggle tomatch transclude transcluded transclusion transform transformation transformations transforming translating traverse traverses treat treating tree tricks true turn turned two typical typically undefined understand understanding undesirable unexpected unless unpredictable unroll until update updatelater updates updatetime updating url use used useful usefull usefulness user username using valid validator value values var variables version very via visibility visible visits was watch watches way ways web well what when where which white whole why widget widgets width will with within wonder work working works world worry would writing x-ng-bind yet you your zippy zippy-title zippymodule zippytitle"}, -{"section":"guide","id":"ie","name":"Developer Guide: Internet Explorer Compatibility","shortName":"Internet Explorer Compatibility","type":"overview","keywords":"above allowed also and angular any application apply are attribute attributes been behavior block blue body border browsers but categories category character child children closing compatibility conditionally consider considered corresponding corrupt could createelement css custom dealing declaration defined delimitate deploying describes developer display document does dom each earlier element elements enable example expected explorer fail fall fix fixes following for furthermore good guide handling happens happy has have html http idiosyncrasies ignored included instead internet into issue issues its load long lte make must my-tag mytag name names namespace need needed news ng-include ng-pluralize ng-view ng:include ng:pluralize ng:view node not older one only optional optionally org overview own pares parse part parts planning please pre-created pre-declare prefix properly read red reference regardless requires restrictions result same selector selectors self shived short should sibling siblings since solid some special standard starts steps structure styling such suppose sure tag tags take tay text than that the then these this three trailing turn two unknown use used using version what when which with work xml xmlns you your"}, -{"section":"guide","id":"module","name":"Developer Guide: Modules","shortName":"Modules","type":"overview","keywords":"$compileprovider $filterprovider $injector $provide $scope $window above accidental additional advantage advantages after aid alert alertspy all also and angular another any api app application applications applied applying approach apps are assume asynchronous basics because been before beforeeach beginning block blocks bonjour bootstrap bootstrapped bootstraps box break breakup but calling can closest code collection concern config configuration configure configured consist constant constants contain controller convenience create created createspy deal declaration declarative declaratively declare declared definition definitions delayed dependencies depending depends describe developer difficult directive directivename don during each easier easily effectively end-to-end equivalent even example examples exception execute executed execution existing expect factory feel filter filtername focused for form free fully function further get going greet greeter greeting greetmod guide hard has have hello help how hurry ignore ignored implies important information initialization inject injected injector inline instance-injector instances instantiates instantiating instantiation instead int into isolated its itself jasmine kickstart kinds large let level like list load loaded loaders loading localization localize main managing many may means method methods mock module modules more most multiple myapp mymodule name nature necessary need needs ng-app ng-controller not nothing notice often once one only order other override overrides overriding overview own packaged parallelize part party per phase placed prevent process projects properly property provider provider-injector providers purpose putting real realize reason recommend recommended reference register registered registrations relevant require required requiring return reusable run runner salutation same scale scenario script scripts separate serves service services setup several should simple simpleapp simpleappmodule simplest some special specifying stimulus structured subset suggestion system tailor take tends test testing tests that the their then there these they thing things third this thus time times tohavebeencalledwith true two typically understand unit unit-test unit-testing unit-tests used user using value var version want way what which while will window wires wiring with words working world write writing xmpl xmplcontroller you your"}, -{"section":"guide","id":"type","name":"Developer Guide: Type","shortName":"Type","type":"overview","keywords":"developer guide overview type"}, -{"section":"misc","id":"contribute","name":"Contributing","shortName":"Contributing","type":"overview","keywords":"absolutely accept accepted access account add added address afterwards ahead aliases all also always and angular angular- angular-ie-compat angular-scenario angularjs annotations anonymous api apis application applying are artifacts automatically available base based before below best better binaries branch browser browsers bug build building bundle can capture case change changed changes characters check checking checkout clone closure closures code com commit compatibility complete complex concise configure consistency consists contained contains contents contribute contributing contribution contributions coordinate craft crafted crazy create creating curl debug default delete dependencies depending development directories directory discussed docs document documentation documented don duplication each efforts either end2end ensure entire errors even exceptions executed execution existing explicitly explorer export extended external features file files first fixes follow following for fork forking from functions generate git github good google googlecode grab guidance guide guidelines h1_1 h1_2 h1_3 h1_4 h1_5 have help here hierarchies hosted how href html http https implicitly information inheritance install installation installing instead instructions integration intend internal internally internet jasmine jasmine-node java javascript jsdoc jstd jstestdriver keep latest license licensed like lint linux list listed local located log love machine machines macintosh made mailing main major make makes map markdown master mean means merged methods min mind minified misc mit modules more most must my-fix-branch name namespaces necessary need needed new ngdoc ngdocs node non-minified not npm objects off often one only open org origin other our out output over overview package page part pass patch please plenty possible pre-installed pre-packaged prefer prevent private project prototypical provided public pull purpose push q-fs quite rake rather release remote repository request reviewed rubyforge rules run runner running runtime script see send sense separately server serves several simple small source standards start steps style submit submitted submitting successfully suite support sure system tag tail tarball templating test tested tests tgz than thank that the them then there these this throughout time today trigger true type under unit unit-tests unless update upstream use used useful username version via view warnings watchr web website welcome what when whenever which with work working wrap write written xml you your yours"}, -{"section":"misc","id":"downloading","name":"Downloading","shortName":"Downloading","type":"overview","keywords":"__angular- after all allows always and angular angular- angular-ie-compat- angular-mocks- angular-scenario- angularjs any anything app application applications apps archive are artifacts available better browser build can closure code compiler compose contains copy created data development directory docs docs- documentation don download downloaded downloading during each easier editor end-to-end error even everything example execute explorer file files following for from fun get getting handy harness have host hosting html http human-readable implementation importantly includes including internet javascript js__ late lifetime listing load loaded local locally maintain make makes messages min minified minimize misc mocks more navigate ng-app nifty non-minified non-obfuscated obfuscated offline older one opening option order org our overview own parent particular path point points production project quickest released releasing resides same script scripts see server servers set should since single size special specifically src started strongly suggest suitable sure tag tailored tarball template test testing tests tgz that the their there these this those two types under unit url urls use user version versioned versions very view want way web which who with work write you your"}, -{"section":"misc","id":"faq","name":"FAQ","shortName":"FAQ","type":"overview","keywords":"about above ajax all and android angular another any api app application apps are attack attacks back basic because bidirectional big binding bindings blackberry bootstrap both brackets browser browsers build building built-in but call called can chrome client closure code com compatible compilation compile compiled compressed constantly create cross-site css data dependency depending desktop details developer development different does dom don download downloading element environment escaping existing falls faq file firefox fit for framework from functions good google has highest holes host how however html html5 http ie6 ie7 impervious implementation important include including injection instructions integrate integrated iphone its itself javascript jquery july just learn level libraries library license licensed like lite live load locally look lots makes manipulate manipulation many means memory misc mit mobile model module more namespace native need none not note obfuscated one only open open-source orthogonal other overview own path performance plugin present primitives produces project projections protection provide radically reason render round-trip script scripting security see service side size sounds source step strings sync system systems tag takes talk technology template templating testability testable that the there these this together two use uses vary very view watch way webkit-based webos what which why widget widgets will with work works worry write yes you your youtube"}, -{"section":"misc","id":"started","name":"Getting Started","shortName":"Getting Started","type":"overview","keywords":"__source__ above abstraction add addition additional after ajax all anatomy and angular angularjs any app application application-specific applications apps are arrays attributes awesome because behavior behind below bi-directional bind binding binds bootstrap border bound box brace braces browser build building built-in caching called can center change changes check class closer code comes compiler concept concepts contents controller cookbook copy could create created css curly data databinding declarative define definitely demonstrates dependency-injection describes design details developer did direction directive display displayed doesn dom don double downloads dynamic easily easy edit editor elements employs entire event events example examples explains explanations explicitly expression extend extensible far favorite feature field file finally following for from fully further get getting going great greeting guide handler hands-on happens have hello helloworld here how html http illustration img immediate immediately important include including input instructions interesting into javascript keep language learned left let like line listener listeners literal loaded logic look maintain makes manipulators map markup matter matters meaning min misc model model-view-controller more name need next ng-app ng-model not notation note notice now object objects occurs open org other our out overview own page pages parts paste pattern placeholder png points presented primitives process processes properties provided real referenced reflected reflects refresh register replace resulting routing scenes scope scopes script section see select serve services set should shows some something source src standard started state string sync tags take tells template templates test text that the these they this through together top tradtional try tutorial two-way type typing understand url use useful uses using variable versa very vice view walks way web what when whenever where which window with work world write xhr you your yourname"}, -{"section":"tutorial","id":"index","name":"Tutorial","shortName":"Tutorial","type":"overview","keywords":"able about actions added all already and android angular angular-phonecat angular-seed angularjs any apache app application apps archive are assume bash bat below better between binding boot-strap browser browsers btn btn-primary build building bundled but can catalog change check class client-side clone code com command commands common computer construction containing contains cool copy couple create creates current data day define dependency details device devices diagram differences digging directory displays document dom don done download dynamic each easier editor either end end-to-end entire environment examples executable executed experiments extensions files filter finish follow following follows for frameworks from get getting git git-mac git-win good great guides hack has have height hours how href http https identify img immediately including injection install installed instructions interest into introduced introduction java javascript last learn learning let lets like line linux list listeners located looking mac machines make makes management manipulation may misc modification more msysgit need node now one only option options org out overview own package pleasant plug-ins png pre-compiled pre-installed preferred process project projects provide quickly really repository resources response run running sandbox scripts see select server services setting shorter should show simple site smarter snapshots some source spend src ss-mac ss-win started step step_00 stuff such suggestions sure system tab-pane tabbable tabs tasks terminal test tests text that the them then thing this through title true tutorial typically understand unit unzip use user verify versioning view views walks want was way web well when which whole width will window windows with without work working works workspace writing you your"}, -{"section":"tutorial","id":"step_00","name":"Tutorial: 0 - Bootstrapping","shortName":"0 - Bootstrapping","type":"overview","keywords":"$compileprovider $cookies $injector $rootscope add added adding advanced affected all along and angular angular-phonecat angular-seed angularjs any api app application apps are associated attribute auto automatically bash bat become being below binding bindings bootstrap bootstrapped bootstrapping browser build bundled but callback can capabilities cases cause caused change changes charset checkout class click code com come command compile consider console constructed containing contains content context continuous core create created css current currently data debugging declared defined demonstrates denoted dependency detects developers developing development diagram directive directives directory display displays doc-tutorial-nav doing dom double-curlies double-curly downloaded downloads during easy efficient element elements empty entire evaluate evaluated evaluation event events every example exciting executed expected experiments expression expressions familiar feature file files finds flag following for forward found freedom from fully future git git-mac git-win github gitunix gitwin gives global going guide happen here how href html http https images img imperative important includes incoming index injection injector insert into javascript-like just key lang latest learn let lib libraries line loaders looks lost mac made manual manual_bootstrap math might model modified module most mouse msysgit must navigate need new next ng-app ng-model ngapp node none not note nothing now number occurs once one one-time only other our overview page phone phonecat place platformpreference png portion pre-configured press processed processing project projects purposes rather ready reflect registers rel removed repeat represents resets response result retrieve root run running scope script scripts see seed serve server servers should show shown simple snapshots snapshotunix snapshotwin snippet some soon source src ss-mac ss-win start starting static step step-0 step_01 steps structure style stylesheet such suitable summary tab tab-pane tabbable tag tell tells template templating terminal test text than that the them then there these things this title treated true try tutorial typical typically updates updating use used users using utf-8 value very via view wait was way web well what when whenever which will window windows with within working workspace yet you your"}, -{"section":"tutorial","id":"step_01","name":"Tutorial: 1 - Static Template","shortName":"1 - Static Template","type":"overview","keywords":"about add adding addition and angular angularjs any app are basic below can cell changes code com contains create data diff display doc-tutorial-nav doc-tutorial-reset dynamically enhances examine example experiments fast faster for full generate generation github got how html https illustrate important index information into just learn let list listed more most next nexus now number order overview page phones purely result same see set some standard static step step-1 step_02 summary tablet template that the then this try turn tutorial two use uses wi-fi will with xoom you your"}, -{"section":"tutorial","id":"step_02","name":"Tutorial: 2 - Angular Templates","shortName":"2 - Angular Templates","type":"overview","keywords":"$compileprovider $rootscope $scope __controller__ __model__ __template__ __view__ _separate_ about above add after all allows along also although and angular angular-phonecat angular-seed angularjs another any api app application appropriate apps are around array attached available back behavior-driven being below between bind binding bindings bootstrapped braces browser but can capture changes changing choose chrome class close code com component components concept concerns connected constants constructed constructs contained contains context controller controllers controlling create created critical crucial ctrl curly data data-binding decouple demonstrates denote descendant describe design developed developers development diagram diff directive directory doc-tutorial-nav doc-tutorial-reset documentation does doing dots dynamic each easy element enclosed encourage encouraged errors establish evaluating example execute expect experiments expression expressions fail fails fast faster features file first following follows for forget framework from full function generation github glue going google got guide hard-coded have hello home how html http https img important incrementing index information injected instantiated into jasmine javascript jstestdriver just keep kill learn learned leave length let lib list listed literal little located logic look mac made make makes many matches means mind mode model model-view-controller models module more most motorola much name navigate new newly next nexus ng-app ng-controller ng-repeat ngcontroller ngrepeat not notation note now number object occur one open opposed org our output overview page part passed pattern phone phonecat phonelistctrl phones playing png point points pre-configured prefer presentation procedure project projection property prototypically providing records refering reflected refresh refreshes repeat repeater replaced report require rerun reset results role root run runner running says scope scopes script search see seen separate server set should similar simple since snippet software src start statement step step-2 step_03 strict structure such summary sure sync syntax tab table tablet tag take tells template templates terminal test testing tests text that the them then there these this three through time tobe together total tutorial two unit updates use uses using value var verifies very view views was way ways web when whenever which wi-fi wiki wikipedia will window with within work world write writing wrote xoom yay yet you your"}, -{"section":"tutorial","id":"step_03","name":"Tutorial: 3 - Filtering Repeaters","shortName":"3 - Filtering Repeaters","type":"overview","keywords":"$compileprovider $filter __move__ actually add added adding also although and angular any api apis app appear application are array assertion automatically available because beforeeach below better between bind binding binds block body both box browser but can capability casual cause change changes changing choice class code com common completely components container-fluid contains content content-- controller controllers core correctly could count create criteria curlies current data data-binding declaration defined demonstrates depending describe detects developer diagram did diff differences directive directives display displayed div doc-tutorial-nav doc-tutorial-reset dom double e2e-testing easily easy edit effects efficiently element elements end-to-end enter even example expect expected experiments explore eye fail feature features filter filtering fine first following follows for foundation friend from full fully function functional gallery get github gives good google guide has have how however html http https img immediately implemented important included index input into invisible jasmine javascript just keeps last laying learn learned let lets like list listed live lives loading loads looks lot made make manipulation match might model module most motorola much must name navigateto new nexus ng-app ng-bind-template ng-controller ng-model ng-repeat ngbind ngbindtemplate ngcontroller ngrepeat ngrepeate node notice noticed now number one only open opportunity other our overview page parent pass pause perfect phone phonecat phonelistctrl phones png process prove query quickly readable reader really records reflect refresh regressions reload repeater repeaters rerun response result returned row-fluid run runner same scope search second see servers set should simple snippet solution something sorting span10 span2 split src standard state statement status stays step step-3 step_04 steps summary sure sync syntax tab tag template templates test testing tests text that the their these they think this those though title tobe together tomatch transparent troubleshooting tutorial two type types unit updates use used useful user users uses using value variable verifies verify version very via view want was what when which while will wired wiring with within won work works would write written you your"}, -{"section":"tutorial","id":"step_04","name":"Tutorial: 4 - Two-way Data Binding","shortName":"4 - Two-way Data Binding","type":"overview","keywords":"$filter $scope about add added addition again age all allows alphabetical alphabetically and angular api app are array assertions attention automatically because beforeeach below between binding bloated block both box browser can cause chained changes chrome class code column com construction control controller controllers copies copy correctly create creates creating ctrl current data data-binding dataset default dependency describe diagram diff differences direction discussed display displays doc-tutorial-nav doc-tutorial-reset doing dom down drop drop-down dynamic each element end-to-end enter errors example execute expect experiments extract fails fast faster feature filter first following for from full function further generation github good got had have here how html http https img implemented important index injection input into items its jasmine job just learn length let letting line list listed loaded look mac made magic make manipulation mechanism menu model modified module most motorola name named narrow necessary new newest next nexus ng-model ng-repeat not notice now once opposite option options order orderby ordering orderprop our output overview parent phone phonecat phonelistctrl phones pick png possible process property provided query record refresh remove reordered reorders repeater reset rest returned run runner running scope script search section see select selected server services set sets shared shorter should snippet sort sorting src statement stay step step-4 step_05 steps summary tab tablet takes talk template temporarily test tested tests text that the them then this time tobe toequal together total turn tutorial two two-way uninitialized unit unknown unordered until update updated used user users uses value var verified verifies via view way well when whenever which wi-fi will wiring with work working works would xoom you your"}, -{"section":"tutorial","id":"step_05","name":"Tutorial: 5 - XHRs & Dependency Injection","shortName":"5 - XHRs & Dependency Injection","type":"overview","keywords":"$controller $http $httpbackend $inject $new $rootscope $scope able access add age all allows also and angular angular-mocks any api apis app apps are arguments array asking assertions assign associated asynchronous avoid backend because been before beforeeach behind being below between binding bit body both bottom bracket browser building built-in but call callback called calling can care caused causes changes child chrome class code collisions com come common complicated components configure constructed constructing contains control controlled controller controllers convention correctly could coupled create created creating ctrl data dataset deal decide declare default defy depend dependencies dependency describe detected diagram diff displayed doc-tutorial-nav doc-tutorial-reset does doesn don done droid dynamically each easier easy enough environment errors every everything exactly execute exist exists expect expectget experiments facilitates fact fails fake fetch fetched few file finally first flush followed following follows for format from front full function generated get github global got guarantees guide handle hard-coded harness has have having helper helps how however html http https identifier identify images img implementation important incoming index infers inject injected injection injector injects instances into isolated issues its jasmine javascript json jsonp just kind known larger last learned let life like limiting line links list listed loaded look loosely mac make makes managed may method methods might minification minified minify mock model models module more most motoblur motorola motorola-defy-with-motoblur name names naming native need new nexus nightmare not notation note notice now number object often one operations operator order orderprop org other our out output overcome overview own parsed phone phonecat phonelistctrl phones png point possible pre-process prefix presentation production project promise property provide provides providing queue ready received recommended recreated relative request requests reset resolved respond responds response responses returned returns run runner sake same sample scenes scope scratch script see separate server service services set several should significant simplicity simply since single snippet some specify splice src started starting starts state step step-5 step_06 stored strings style subsystem success suggests summary takes tell test testing tests that the them themselves there these they this three throws thumbnail tobe tobeundefined toequal total train trained transitive tutorial two unit until upon url use used uses using value var verify verifying version way web well well-structured were what when where which wikipedia will with without work would wraps write xhr xhrs you your"}, -{"section":"tutorial","id":"step_06","name":"Tutorial: 6 - Templating Links & Images","shortName":"6 - Templating Links & Images","type":"overview","keywords":"$compileprovider about access add added additional also and angular api app applications are attribute below binding brace browser can catalog changes chrome class click com confirm contains content correct create data defy detail diagram diff directive directory display doc-tutorial-nav doc-tutorial-reset done double-curly dynamically each easy element end-to-end enter expect experiments expression extraneous file filter firebug for from full function future generate generating github had have how href html http https ids image images imageurl img implement important indeed information initiating input inspecting inspector invalid jpg json layout lead learn links list listed literally location logs makes making markup module most motoblur motorola motorola-defy-with-motoblur multiple name new next nexus ng-repeat ng-src ngsrc note now now-familiar nowhere old only orderby overview pages phone phones plain point prevents query record refresh regular render replace request run runner running see server should snippet specific specified src step step-6 step_07 steps subsequent such summary tab tag template templates templating test tests that the them this thumb thumbnail tobe tools treating tutorial unique upcoming url urls use used using values verify views web webserver which will with would you"}, -{"section":"tutorial","id":"step_07","name":"Tutorial: 7 - Routing & Multiple Views","shortName":"7 - Routing & Multiple Views","type":"overview","keywords":"$compileprovider $http $inject $route $routeparams $routeprovider $scope about add added adding address against age all allow also amd and angular angularjs anything api apis app appears application are asked associated attribute automatically available batman because becoming before beforeeach behavior below binding bookmarks bootstrap bootstraps both browser build building but call called can captain case changes class click code com common complex config configuration configure configured configuring conjunction construct constructed contain container-fluid containing content-- control controller controllers core correct could create created creates creating creation current currently declaration declared deep define defined definition definitions dependencies dependency depending describe detail detailed details devices diagram diff directive display displayed div doc-tutorial-nav doc-tutorial-reset doesn don during each easy either element empty end-to-end even everything existence expand expect expected experiments expose exposes extracted fact feature fetching file filter fit follows for forward fragment from fulfil full function get github global goals going growing happens has hash hero history how href html http https imageurl img implement implemented important include included index information inheritance inject injected injection injector instances instantiates instead into itself know layout lazily lazy learn let lets lib line link linking list listed live load located location makes managed match matched matches messy model module modules more most multiple name navigate navigateto navigation need new newly next nexus-s ng-app ng-model ng-repeat ng-src ng-view ngapp ngview none not notation note nothing noticed now object objects once only open opposed order orderby ordering orderprop org orthogonal other otherwise our overview page parameter part partial partials perfect phase phone phone-detail phone-list phonecat phonecatapp phonecatctrl phonedetailctrl phoneid phonelistctrl phones placed placeholder png previous problem proper properly property proton provide provided provider providers query quickly ready redirect redirected redirection refresh register removed removing rendered replaced request require responsibilities reused role route routes routing row-fluid run runner running runtime same scope script search second see server service services set shadow shadowing should show shown side single slowly snippet sole solve some sort span10 span2 specified specify src starts state statement step step-7 step_08 steps stub stuff style summary systems tab tbd template templates test tests that the their them then these they thing this three thumb thumbnail tobe todo together triggers try turn tutorial two understand unless url urls use used user users uses using usually utilize value variable variables various verify very via view views visible was way well were what when where which wikipedia will wire wired with wonders work works would wrote you your zoro"}, -{"section":"tutorial","id":"step_08","name":"Tutorial: 8 - More Templating","shortName":"8 - More Templating","type":"overview","keywords":"$controller $http $httpbackend $inject $new $rootscope $route $routeparams $scope added addition additionalfeatures also and android angular api app are availability been beforeeach below bindings browser can changes chrome class click clicks com communications comprise construct contains contour controller ctrl current custom data describe describes description detail details diagram diff directory display displayed doc-tutorial-nav doc-tutorial-reset e2e-testing each end-to-end errors execute expand expect expectget experiments extracted fails features fetch field file files filter flash flesh flush following for from full function get github guide has heading how html http https images img implement important information into jpg json learn line list listed lists mac markup model module more most name navigates navigateto near networks new nexus nexus-s ng-repeat ng-src ngrepeater none note now one our out output overview own page phone phone-details phone-specific phone-thumbs phonedetailctrl phoneid phonelistctrl phones place placeholder png proceed project properties ram refresh replaced request reset respond route run runner running same scope script see server service should show similar snippet specs src step step-8 step_09 storage structure style success summary tab tbd template templating test tests that the them these this thumbnail tobe tobeundefined todo toequal total tutorial unit url use user using var various verifies view way when where which will with works write wrote xyz you your"}, -{"section":"tutorial","id":"step_09","name":"Tutorial: 9 - Filters","shortName":"9 - Filters","type":"overview","keywords":"$filter add also and angular any api app are bar baz before beforeeach below binding bindings boolean built-in can cap certain changes characters checkmark chosen chrome code com combine component configure connectivity convert create cross custom date dependency describe detail details diff display displayed doc-tutorial-nav doc-tutorial-reset easy either element employ enhance errors evaluates execute expect experiment experiments expression fails false features file filter filtered filters following follows for full function further github glyphs going gps have how html https important include index indicate infrared inject injector input into json layout learn learned let like listed lives looks lower mac main model module most name navigate need new ng-model not note now one order other our output overview own page pages phone phonecat phonecatfilters present previous ready register represent reset return run runner script see should since some src step step-9 step_10 string strings summary syntax template templates test tested tests text that the these this those tobe total true tutorial two unicode unit uppercase uppercased use used userinput using values very were what whether will with write you your"}, -{"section":"tutorial","id":"step_10","name":"Tutorial: 10 - Event Handlers","shortName":"10 - Event Handlers","type":"overview","keywords":"$compileprovider $http $inject $routeparams $scope add added alert also and angular any api app appropriately are attr below better between bound browser button can change changed changes class click clickable clicked clicking clicks com controller controllers could created current data declared default describe desired detail details diagram diff directive display displays doc-tutorial-nav doc-tutorial-reset element elmo end-to-end even event expect experiments feature fetch first for from full function get github great handler handlers have hello how html http https image images imageurl img important index inherited its jpg json just large last learn let listed look main mainimageurl method methods model module most move new ng-click ng-repeat ng-src ngclick ngsrc none now one operational overview page phone phone-details phone-list phone-thumbs phonecatctrl phonedetailctrl phoneid phonelistctrl phones place png property ready refresh registered remains replace run runner running same second see server set setimage several should smaller snippet src step step-10 step_11 stop style success summary swap swapper tab template test tests that the them this thumbnail thumbnails tobe todo tutorial two url use user value verifies verify view way well when while will with working world would you"}, -{"section":"tutorial","id":"step_11","name":"Tutorial: 11 - REST and Custom Services","shortName":"11 - REST and Custom Services","type":"overview","keywords":"$controller $http $httpbackend $inject $new $resource $rootscope $routeparams $scope above account actual add additionally addmatchers age all alone also although amount and angular angular-resource any api app application are arguments arrives augments automatically because beforeeach below bind both callback called can case cases changes check chrome client closing code com compares contains controller controllers correctly cover create created ctrl custom data data-binding deal declare declared default define defined deleting dependencies dependency describe detail diff doc-tutorial-nav doc-tutorial-reset doing don droid easier easy equals errors everything exactly execute expect expected expectget exposed factoring factory fail fails fetch fetched fetches few file filled flush following for from full function functions future get github have having here how html http https ignores illustrates image images imageurl important improve improvement include instead interacting into invoking isarray issuing jasmine json just last layout lib lines listed load looks lower-level mac mainimageurl make makes match matcher matchers methods model modified module most motorola name need new newly-defined nexus ngresource not notes notice now object objects only orderprop org our out output overview params pass passed phone phonecat phonecatservices phonedetailctrl phoneid phonelistctrl phones png problem process processing properties query register relatively relying replaced replacing represents requests require reset resource resources respond response responses rest restful result return returned returns run runner scope script see server service services set setimage setting short should similar simple simplified solve sometimes soon sources src standard statement step step-11 sub-controllers success sufficient summary synchronously takes template test tests than that the the_end them then there these thing this time tobe toequal toequaldata total tutorial two understand unit update updating urls use used using value values var verify via view want way web were what when which wikipedia will with without would xhr xyz xyzphonedata you"}, -{"section":"tutorial","id":"the_end","name":"Tutorial: The End","shortName":"The End","type":"overview","keywords":"about and angular application apps are back bootstrap checkout code com commands complete concepts contributing cookbook details develop developer developing development end enough especially examples experiment feedback feel for free further git google goto_step guide have hope https inspired interested jump just learn learned make message might misc more now our out overview own please post previous project questions ready recommend say see seed several start steps that the this touched tutorial useful using want was web when with you your"}]; \ No newline at end of file From 67b79704a5c5ebcbf9014cfb7386d5c7d587a538 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Wed, 16 May 2012 22:20:35 -0700 Subject: [PATCH 05/14] fix(docs): accept return in addition to returns documentation used @return but parser expected @returns, which made the generated documentation incomplete. --- docs/src/ngdoc.js | 4 ++-- src/auto/injector.js | 4 ++-- src/ng/location.js | 16 ++++++++-------- src/ngMock/angular-mocks.js | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/src/ngdoc.js b/docs/src/ngdoc.js index def665faa6f5..6576e6193cad 100644 --- a/docs/src/ngdoc.js +++ b/docs/src/ngdoc.js @@ -227,10 +227,10 @@ Doc.prototype = { 'default':match[6] }; self.param.push(param); - } else if (atName == 'returns') { + } else if (atName == 'returns' || atName == 'return') { match = text.match(/^\{([^}=]+)\}\s+(.*)/); if (!match) { - throw new Error("Not a valid 'returns' format: " + text); + throw new Error("Not a valid 'returns' format: " + text + ' in ' + self.file + ':' + self.line); } self.returns = { type: match[1], diff --git a/src/auto/injector.js b/src/auto/injector.js index 1a1fcc27e557..250f05c5b826 100644 --- a/src/auto/injector.js +++ b/src/auto/injector.js @@ -135,7 +135,7 @@ function inferInjectionArgs(fn) { * @param {Object=} self The `this` for the invoked method. * @param {Object=} locals Optional object. If preset then any argument names are read from this object first, before * the `$injector` is consulted. - * @return the value returned by the invoked `fn` function. + * @returns {*} the value returned by the invoked `fn` function. */ /** @@ -149,7 +149,7 @@ function inferInjectionArgs(fn) { * @param {function} Type Annotated constructor function. * @param {Object=} locals Optional object. If preset then any argument names are read from this object first, before * the `$injector` is consulted. - * @return new instance of `Type`. + * @returns {Object} new instance of `Type`. */ diff --git a/src/ng/location.js b/src/ng/location.js index 6d38d1acf3ff..54abf6cb3988 100644 --- a/src/ng/location.js +++ b/src/ng/location.js @@ -214,7 +214,7 @@ LocationUrl.prototype = { * Return full url representation with all segments encoded according to rules specified in * {@link http://www.ietf.org/rfc/rfc3986.txt RFC 3986}. * - * @return {string} + * @return {string} full url */ absUrl: locationGetter('$$absUrl'), @@ -231,7 +231,7 @@ LocationUrl.prototype = { * Change path, search and hash, when called with parameter and return `$location`. * * @param {string=} url New url without base prefix (e.g. `/path?a=b#hash`) - * @return {string} + * @return {string} url */ url: function(url, replace) { if (isUndefined(url)) @@ -255,7 +255,7 @@ LocationUrl.prototype = { * * Return protocol of current url. * - * @return {string} + * @return {string} protocol of current url */ protocol: locationGetter('$$protocol'), @@ -269,7 +269,7 @@ LocationUrl.prototype = { * * Return host of current url. * - * @return {string} + * @return {string} host of current url. */ host: locationGetter('$$host'), @@ -283,7 +283,7 @@ LocationUrl.prototype = { * * Return port of current url. * - * @return {Number} + * @return {Number} port */ port: locationGetter('$$port'), @@ -303,7 +303,7 @@ LocationUrl.prototype = { * if it is missing. * * @param {string=} path New path - * @return {string} + * @return {string} path */ path: locationGetterSetter('$$path', function(path) { return path.charAt(0) == '/' ? path : '/' + path; @@ -325,7 +325,7 @@ LocationUrl.prototype = { * @param {string=} paramValue If `search` is a string, then `paramValue` will override only a * single search parameter. If the value is `null`, the parameter will be deleted. * - * @return {string} + * @return {string} search */ search: function(search, paramValue) { if (isUndefined(search)) @@ -358,7 +358,7 @@ LocationUrl.prototype = { * Change hash fragment when called with parameter and return `$location`. * * @param {string=} hash New hash fragment - * @return {string} + * @return {string} hash */ hash: locationGetterSetter('$$hash', identity), diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index 8b5d100afa5b..20e3bdbba3d7 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -578,7 +578,7 @@ angular.mock.$LogProvider = function() { * This method is also available on window, where it can be used to display objects on debug console. * * @param {*} object - any object to turn into string. - * @return a serialized string of the argument + * @return {string} a serialized string of the argument */ angular.mock.dump = function(object) { return serialize(object); From ba499cd9583ef6f04b806455ca89fc61c7feaae3 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Fri, 18 May 2012 14:39:09 -0700 Subject: [PATCH 06/14] fix(jqLite): don't eat event exceptions JQuery does not catch exceptions either, and just lets them pass. This allows the exception to be shown in console. --- src/jqLite.js | 6 +----- src/ng/rootElement.js | 0 2 files changed, 1 insertion(+), 5 deletions(-) create mode 100644 src/ng/rootElement.js diff --git a/src/jqLite.js b/src/jqLite.js index 1868f565aa0b..387de47d00ff 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -559,11 +559,7 @@ function createEventHandler(element, events) { }; forEach(events[type || event.type], function(fn) { - try { - fn.call(element, event); - } catch (e) { - // Not much to do here since jQuery ignores these anyway - } + fn.call(element, event); }); // Remove monkey-patched methods (IE), diff --git a/src/ng/rootElement.js b/src/ng/rootElement.js new file mode 100644 index 000000000000..e69de29bb2d1 From 044048ebaf38aa84426134ed80b17f9288f7542c Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Wed, 16 May 2012 22:21:08 -0700 Subject: [PATCH 07/14] feat($injector): provide API for retrieving function annotations --- src/auto/injector.js | 138 +++++++++++++++++++++++++++++++------- test/auto/injectorSpec.js | 8 +++ 2 files changed, 120 insertions(+), 26 deletions(-) diff --git a/src/auto/injector.js b/src/auto/injector.js index 250f05c5b826..6fa06704d3e8 100644 --- a/src/auto/injector.js +++ b/src/auto/injector.js @@ -43,18 +43,31 @@ var FN_ARG_SPLIT = /,/; var FN_ARG = /^\s*(_?)(.+?)\1\s*$/; var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; function inferInjectionArgs(fn) { - assertArgFn(fn); - if (!fn.$inject) { - var args = fn.$inject = []; - var fnText = fn.toString().replace(STRIP_COMMENTS, ''); - var argDecl = fnText.match(FN_ARGS); - forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg){ - arg.replace(FN_ARG, function(all, underscore, name){ - args.push(name); + var $inject, + fnText, + argDecl, + last; + + if (typeof fn == 'function') { + if (!($inject = fn.$inject)) { + $inject = []; + fnText = fn.toString().replace(STRIP_COMMENTS, ''); + argDecl = fnText.match(FN_ARGS); + forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg){ + arg.replace(FN_ARG, function(all, underscore, name){ + $inject.push(name); + }); }); - }); + fn.$inject = $inject; + } + } else if (isArray(fn)) { + last = fn.length - 1; + assertArgFn(fn[last], 'fn') + $inject = fn.slice(0, last); + } else { + assertArgFn(fn, 'fn', true); } - return fn.$inject; + return $inject; } /////////////////////////////////////// @@ -152,6 +165,85 @@ function inferInjectionArgs(fn) { * @returns {Object} new instance of `Type`. */ +/** + * @ngdoc method + * @name angular.module.AUTO.$injector#annotation + * @methodOf angular.module.AUTO.$injector + * + * @description + * Return an array of service names which the function is requesting for injection. This API is used by the injector + * to determine which services need to be injected into the function when the function is invoked. There are three + * ways in which the function can be annotated with the needed dependencies. + * + * # Argument names + * + * The simplest form is to extract the dependencies from the arguments of the function. This is done by converting + * the function into a string using `toString()` method and extracting the argument names. + *
    + *   // Given
    + *   function MyController($scope, $route) {
    + *     // ...
    + *   }
    + *
    + *   // Then
    + *   expect(injector.annotation(MyController)).toEqual(['$scope', '$route']);
    + * 
    + * + * This method does not work with code minfication / obfuscation. For this reason the following annotation strategies + * are supported. + * + * # The `$injector` property + * + * If method has `$inject` property the it`s value will be an array of service names to inject into the function. + *
    + *   // Given
    + *   var MyController = function(obfuscatedScope, obfuscatedRoute) {
    + *     // ...
    + *   }
    + *   // Define function dependencies
    + *   MyController.$inject = ['$scope', '$route'];
    + *
    + *   // Then
    + *   expect(injector.annotation(MyController)).toEqual(['$scope', '$route']);
    + * 
    + * + * # The inline notation + * + * Often times the function needs to be inlined. However setting the `$inject` property prevents the inlining as in + * this example: + * + *
    + *   // We wish to write this (not minification / obfuscation safe)
    + *   injector.invoke(function($compile, $rootScope) {
    + *     // ...
    + *   });
    + *
    + *   // We are forced to write break inlining
    + *   var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {
    + *     // ...
    + *   };
    + *   tmpFn.$inject = ['$compile', '$rootScope'];
    + *   injector.invoke(tempFn);
    + *
    + *   // To better support inline function the inline annotation is supported
    + *   injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {
    + *     // ...
    + *   }]);
    + *
    + *   // Therefore
    + *   expect(injector.annotation(
    + *      ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])
    + *    ).toEqual(['$compile', '$rootScope']);
    + * 
    + * + * @param {function|Array.} fn Function for which dependent service names need to be retrieved as described + * above. + * + * @returns {Array.} The names of the services which the function requires. + */ + + + /** * @ngdoc object @@ -454,23 +546,11 @@ function createInjector(modulesToLoad) { function invoke(fn, self, locals){ var args = [], - $inject, - length, + $inject = inferInjectionArgs(fn), + length, i, key; - if (typeof fn == 'function') { - $inject = inferInjectionArgs(fn); - length = $inject.length; - } else { - if (isArray(fn)) { - $inject = fn; - length = $inject.length - 1; - fn = $inject[length]; - } - assertArgFn(fn, 'fn'); - } - - for(var i = 0; i < length; i++) { + for(i = 0, length = $inject.length; i < length; i++) { key = $inject[i]; args.push( locals && locals.hasOwnProperty(key) @@ -478,6 +558,11 @@ function createInjector(modulesToLoad) { : getService(key, path) ); } + if (!fn.$inject) { + // this means that we must be an array. + fn = fn[length]; + } + // Performance optimization: http://jsperf.com/apply-vs-call-vs-invoke switch (self ? -1 : args.length) { @@ -510,7 +595,8 @@ function createInjector(modulesToLoad) { return { invoke: invoke, instantiate: instantiate, - get: getService + get: getService, + annotation: inferInjectionArgs }; } } diff --git a/test/auto/injectorSpec.js b/test/auto/injectorSpec.js index 83bd3d1f81e2..796ecaf1bb78 100644 --- a/test/auto/injectorSpec.js +++ b/test/auto/injectorSpec.js @@ -179,6 +179,14 @@ describe('injector', function() { inferInjectionArgs({}); }).toThrow(); }); + + + it('should publish annotation API', function() { + expect(injector.annotation(angular.noop)).toEqual([]); + expect(injector.annotation(['a', noop])).toEqual(['a']); + expect(injector.annotation(function(a, b){})).toEqual(['a', 'b']); + expect(injector.annotation(extend(function(){}, {$inject:['b', 'c']}))).toEqual(['b', 'c']); + }); }); From b2318d2b6f741f6a889bf28e9672a1bbe692e621 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Tue, 22 May 2012 21:12:19 -0700 Subject: [PATCH 08/14] feat($route): resolve local route promises Resolve all promises on route before we fire $afterRouteChange which then renders the ngView. --- src/ng/directive/ngView.js | 65 ++++---- src/ng/route.js | 107 ++++++++++++-- test/ng/directive/ngViewSpec.js | 4 +- test/ng/routeSpec.js | 254 ++++++++++++++++++++++++++++++-- 4 files changed, 368 insertions(+), 62 deletions(-) diff --git a/src/ng/directive/ngView.js b/src/ng/directive/ngView.js index 7c7377653b40..580ef1abe2dc 100644 --- a/src/ng/directive/ngView.js +++ b/src/ng/directive/ngView.js @@ -112,11 +112,11 @@ var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$c restrict: 'ECA', terminal: true, link: function(scope, element, attr) { - var changeCounter = 0, - lastScope, + var lastScope, onloadExp = attr.onload || ''; scope.$on('$afterRouteChange', update); + scope.$on('$failedRouteChange', clearContent); update(); @@ -127,43 +127,36 @@ var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$c } } + function clearContent() { + element.html(''); + destroyLastScope(); + } + function update() { - var template = $route.current && $route.current.template, - thisChangeId = ++changeCounter; - - function clearContent() { - // ignore callback if another route change occured since - if (thisChangeId === changeCounter) { - element.html(''); - destroyLastScope(); - } - } + var locals = $route.current && $route.current.locals, + template = locals && locals.$template; if (template) { - $http.get(template, {cache: $templateCache}).success(function(response) { - // ignore callback if another route change occured since - if (thisChangeId === changeCounter) { - element.html(response); - destroyLastScope(); - - var link = $compile(element.contents()), - current = $route.current, - controller; - - lastScope = current.scope = scope.$new(); - if (current.controller) { - controller = $controller(current.controller, {$scope: lastScope}); - element.contents().data('$ngControllerController', controller); - } - - link(lastScope); - lastScope.$emit('$viewContentLoaded'); - lastScope.$eval(onloadExp); - - // $anchorScroll might listen on event... - $anchorScroll(); - } - }).error(clearContent); + element.html(template); + destroyLastScope(); + + var link = $compile(element.contents()), + current = $route.current, + controller; + + lastScope = current.scope = scope.$new(); + if (current.controller) { + locals.$scope = lastScope; + controller = $controller(current.controller, locals); + element.contents().data('$ngControllerController', controller); + } + + link(lastScope); + lastScope.$emit('$viewContentLoaded'); + lastScope.$eval(onloadExp); + + // $anchorScroll might listen on event... + $anchorScroll(); } else { clearContent(); } diff --git a/src/ng/route.js b/src/ng/route.js index fd54b1c51ad1..5f6f7af0dda0 100644 --- a/src/ng/route.js +++ b/src/ng/route.js @@ -19,7 +19,7 @@ function $RouteProvider(){ * @methodOf angular.module.ng.$routeProvider * * @param {string} path Route path (matched against `$location.path`). If `$location.path` - * contains redudant trailing slash or is missing one, the route will still match and the + * contains redundant trailing slash or is missing one, the route will still match and the * `$location.path` will be updated to add or drop the trailing slash to exacly match the * route definition. * @param {Object} route Mapping information to be assigned to `$route.current` on route @@ -32,6 +32,17 @@ function $RouteProvider(){ * - `template` – `{string=}` – path to an html template that should be used by * {@link angular.module.ng.$compileProvider.directive.ngView ngView} or * {@link angular.module.ng.$compileProvider.directive.ngInclude ngInclude} directives. + * - `resolve` - `{Object.=}` - An optional map of dependencies which can + * be injected into the controller. If any of these dependencies are promises, they are + * resolved and converted to a value, before the controller can be instantiated and the + * `$aftreRouteChange` event can be fired. The map object is: + * + * - `key` – `{string}`: a name of a dependency which can be injected into the controller. + * - `factory` - `{string|function}`: If `string` then it is an alias to the service. + * Otherwise if function, then it is invoked and the return value is treated as the + * dependency. If the result is a promise, it is resolved before its value is injected + * into the controller. + * * - `redirectTo` – {(string|function())=} – value to update * {@link angular.module.ng.$location $location} path with and trigger route redirection. * @@ -89,8 +100,8 @@ function $RouteProvider(){ }; - this.$get = ['$rootScope', '$location', '$routeParams', - function( $rootScope, $location, $routeParams) { + this.$get = ['$rootScope', '$location', '$routeParams', '$q', '$injector', '$http', '$templateCache', + function( $rootScope, $location, $routeParams, $q, $injector, $http, $templateCache) { /** * @ngdoc object @@ -99,6 +110,16 @@ function $RouteProvider(){ * @requires $routeParams * * @property {Object} current Reference to the current route definition. + * The route definition contains: + * + * - `controller`: The controller constructor as define in route definition. + * - `locals`: A map of locals which is used by {@link angular.module.ng.$controller $controller} service for + * controller instantiation. The `locals` contain + * the resolved values of the `resolve` map. Additionally the `locals` also contain: + * + * - `$scope` - The current route scope. + * - `$template` - The current route template HTML. + * * @property {Array.} routes Array of all configured routes. * * @description @@ -153,7 +174,15 @@ function $RouteProvider(){ angular.module('ngView', [], function($routeProvider, $locationProvider) { $routeProvider.when('/Book/:bookId', { template: 'book.html', - controller: BookCntl + controller: BookCntl, + resolve: { + // I will cause a 1 second delay + delay: function($q, $defer) { + var delay = $q.defer(); + $defer(delay.resolve, 1000); + return delay.promise; + } + } }); $routeProvider.when('/Book/:bookId/ch/:chapterId', { template: 'chapter.html', @@ -182,7 +211,7 @@ function $RouteProvider(){ - it('should load and compile correct template', function() { + iit('should load and compile correct template', function() { element('a:contains("Moby: Ch1")').click(); var content = element('.doc-example-live [ng-view]').text(); expect(content).toMatch(/controller\: ChapterCntl/); @@ -190,6 +219,7 @@ function $RouteProvider(){ expect(content).toMatch(/Chapter Id\: 1/); element('a:contains("Scarlet")').click(); + sleep(2); // promises are not part of scenario waiting content = element('.doc-example-live [ng-view]').text(); expect(content).toMatch(/controller\: BookCntl/); expect(content).toMatch(/Book Id\: Scarlet/); @@ -204,7 +234,11 @@ function $RouteProvider(){ * @eventOf angular.module.ng.$route * @eventType broadcast on root scope * @description - * Broadcasted before a route change. + * Broadcasted before a route change. At this point the route services starts + * resolving all of the dependencies needed for the route change to occurs. + * Typically this involves fetching the view template as well as any dependencies + * defined in `resolve` route property. Once all of the dependencies are resolved + * `$afterRouteChange` is fired. * * @param {Route} next Future route information. * @param {Route} current Current route information. @@ -216,12 +250,27 @@ function $RouteProvider(){ * @eventOf angular.module.ng.$route * @eventType broadcast on root scope * @description - * Broadcasted after a route change. + * Broadcasted after a route dependencies are resolved. + * {@link angular.module.ng.$compileProvider.directive.ngView ngView} listens for the directive + * to instantiate the controller and render the view. * * @param {Route} current Current route information. * @param {Route} previous Previous route information. */ + /** + * @ngdoc event + * @name angular.module.ng.$route#$failedRouteChange + * @eventOf angular.module.ng.$route + * @eventType broadcast on root scope + * @description + * Broadcasted if any of the resolve promises are rejected. + * + * @param {Route} current Current route information. + * @param {Route} previous Previous route information. + * @param {Route} rejection Rejection of the promise. Usually the error of the failed promise. + */ + /** * @ngdoc event * @name angular.module.ng.$route#$routeUpdate @@ -245,7 +294,7 @@ function $RouteProvider(){ * @methodOf angular.module.ng.$route * * @description - * Causes `$route` service to reload theR current route even if + * Causes `$route` service to reload the current route even if * {@link angular.module.ng.$location $location} hasn't changed. * * As a result of that, {@link angular.module.ng.$compileProvider.directive.ngView ngView} @@ -309,11 +358,47 @@ function $RouteProvider(){ $location.url(next.redirectTo(next.pathParams, $location.path(), $location.search())) .replace(); } - } else { - copy(next.params, $routeParams); } } - $rootScope.$broadcast('$afterRouteChange', next, last); + $q.when(next). + then(function() { + + if (next) { + var keys = [], + values = []; + + forEach(next.resolve || {}, function(value, key) { + keys.push(key); + values.push(isFunction(value) ? $injector.invoke(value) : $injector.get(value)); + }); + if (next.template) { + keys.push('$template'); + values.push($http. + get(next.template, {cache: $templateCache}). + then(function(response) { return response.data; })); + } + return $q.all(values).then(function(values) { + var locals = next.locals = {}; + forEach(values, function(value, index) { + locals[keys[index]] = value; + }); + }); + } + }). + // after route change + then(function() { + if (next == $route.current) { + if (next) { + copy(next.params, $routeParams); + } + $rootScope.$broadcast('$afterRouteChange', next, last); + } + }, function(error) { + if (next == $route.current) { + $rootScope.$broadcast('$failedRouteChange', next, last, error); + } + }); + } } diff --git a/test/ng/directive/ngViewSpec.js b/test/ng/directive/ngViewSpec.js index 00fc68279009..a256089fd339 100644 --- a/test/ng/directive/ngViewSpec.js +++ b/test/ng/directive/ngViewSpec.js @@ -293,8 +293,8 @@ describe('ngView', function() { $rootScope.$digest(); expect(element.text()).toBe('bound-value'); - expect(log).toEqual(['$beforeRouteChange', '$afterRouteChange', 'init-ctrl', - '$viewContentLoaded']); + expect(log).toEqual([ + '$beforeRouteChange', 'init-ctrl', '$viewContentLoaded', '$afterRouteChange' ]); }); }); diff --git a/test/ng/routeSpec.js b/test/ng/routeSpec.js index b66cbb8edeec..fe4d858c8c3a 100644 --- a/test/ng/routeSpec.js +++ b/test/ng/routeSpec.js @@ -1,6 +1,19 @@ 'use strict'; describe('$route', function() { + var $httpBackend; + + beforeEach(module(function() { + return function(_$httpBackend_) { + $httpBackend = _$httpBackend_; + $httpBackend.when('GET', 'Chapter.html').respond('chapter'); + $httpBackend.when('GET', 'test.html').respond('test'); + $httpBackend.when('GET', 'foo.html').respond('foo'); + $httpBackend.when('GET', 'baz.html').respond('baz'); + $httpBackend.when('GET', 'bar.html').respond('bar'); + $httpBackend.when('GET', '404.html').respond('not found'); + }; + })); it('should route and fire change event', function() { var log = '', @@ -28,6 +41,7 @@ describe('$route', function() { $location.path('/Book/Moby/Chapter/Intro').search('p=123'); $rootScope.$digest(); + $httpBackend.flush(); expect(log).toEqual('before();after();'); expect($route.current.params).toEqual({book:'Moby', chapter:'Intro', p:'123'}); @@ -165,27 +179,241 @@ describe('$route', function() { }); - it('should not fire $after/beforeRouteChange during bootstrap (if no route)', function() { - var routeChangeSpy = jasmine.createSpy('route change'); + describe('events', function() { + it('should not fire $after/beforeRouteChange during bootstrap (if no route)', function() { + var routeChangeSpy = jasmine.createSpy('route change'); - module(function($routeProvider) { - $routeProvider.when('/one', {}); // no otherwise defined + module(function($routeProvider) { + $routeProvider.when('/one', {}); // no otherwise defined + }); + + inject(function($rootScope, $route, $location) { + $rootScope.$on('$beforeRouteChange', routeChangeSpy); + $rootScope.$on('$afterRouteChange', routeChangeSpy); + + $rootScope.$digest(); + expect(routeChangeSpy).not.toHaveBeenCalled(); + + $location.path('/no-route-here'); + $rootScope.$digest(); + expect(routeChangeSpy).not.toHaveBeenCalled(); + }); }); - inject(function($rootScope, $route, $location) { - $rootScope.$on('$beforeRouteChange', routeChangeSpy); - $rootScope.$on('$afterRouteChange', routeChangeSpy); + it('should fire $beforeRouteChange and resolve promises', function() { + var deferA, + deferB; - $rootScope.$digest(); - expect(routeChangeSpy).not.toHaveBeenCalled(); + module(function($provide, $routeProvider) { + $provide.factory('b', function($q) { + deferB = $q.defer(); + return deferB.promise; + }); + $routeProvider.when('/path', { template: 'foo.html', resolve: { + a: function($q) { + deferA = $q.defer(); + return deferA.promise; + }, + b: 'b' + } }); + }); - $location.path('/no-route-here'); - $rootScope.$digest(); - expect(routeChangeSpy).not.toHaveBeenCalled(); + inject(function($location, $route, $rootScope, $httpBackend) { + var log = ''; + + $httpBackend.expectGET('foo.html').respond('FOO'); + + $location.path('/path'); + $rootScope.$digest(); + expect(log).toEqual(''); + $httpBackend.flush(); + expect(log).toEqual(''); + deferA.resolve(); + $rootScope.$digest(); + expect(log).toEqual(''); + deferB.resolve(); + $rootScope.$digest(); + expect($route.current.locals.$template).toEqual('FOO'); + }); }); - }); + it('should fire $failedRouteChange event on resolution error', function() { + var deferA; + + module(function($provide, $routeProvider) { + $routeProvider.when('/path', { template: 'foo', resolve: { + a: function($q) { + deferA = $q.defer(); + return deferA.promise; + } + } }); + }); + + inject(function($location, $route, $rootScope) { + var log = ''; + + $rootScope.$on('$beforeRouteChange', function() { log += 'before();'; }); + $rootScope.$on('$failedRouteChange', function(e, n, l, reason) { log += 'failed(' + reason + ');'; }); + + $location.path('/path'); + $rootScope.$digest(); + expect(log).toEqual('before();'); + + deferA.reject('MyError'); + $rootScope.$digest(); + expect(log).toEqual('before();failed(MyError);'); + }); + }); + + + it('should fetch templates', function() { + module(function($routeProvider) { + $routeProvider. + when('/r1', { template: 'r1.html' }). + when('/r2', { template: 'r2.html' }); + }); + + inject(function($route, $httpBackend, $location, $rootScope) { + var log = ''; + $rootScope.$on('$beforeRouteChange', function(e, next) { log += '$before(' + next.template + ');'}); + $rootScope.$on('$afterRouteChange', function(e, next) { log += '$after(' + next.template + ');'}); + + $httpBackend.expectGET('r1.html').respond('R1'); + $httpBackend.expectGET('r2.html').respond('R2'); + + $location.path('/r1'); + $rootScope.$digest(); + expect(log).toBe('$before(r1.html);'); + + $location.path('/r2'); + $rootScope.$digest(); + expect(log).toBe('$before(r1.html);$before(r2.html);'); + + $httpBackend.flush(); + expect(log).toBe('$before(r1.html);$before(r2.html);$after(r2.html);'); + expect(log).not.toContain('$after(r1.html);'); + }); + }); + + + it('should not update $routeParams until $afterRouteChange', function() { + module(function($routeProvider) { + $routeProvider. + when('/r1/:id', { template: 'r1.html' }). + when('/r2/:id', { template: 'r2.html' }); + }); + + inject(function($route, $httpBackend, $location, $rootScope, $routeParams) { + var log = ''; + $rootScope.$on('$beforeRouteChange', function(e, next) { log += '$before' + toJson($routeParams) + ';'}); + $rootScope.$on('$afterRouteChange', function(e, next) { log += '$after' + toJson($routeParams) + ';'}); + + $httpBackend.whenGET('r1.html').respond('R1'); + $httpBackend.whenGET('r2.html').respond('R2'); + + $location.path('/r1/1'); + $rootScope.$digest(); + expect(log).toBe('$before{};'); + $httpBackend.flush(); + expect(log).toBe('$before{};$after{"id":"1"};'); + + log = ''; + + $location.path('/r2/2'); + $rootScope.$digest(); + expect(log).toBe('$before{"id":"1"};'); + $httpBackend.flush(); + expect(log).toBe('$before{"id":"1"};$after{"id":"2"};'); + }); + }); + + + it('should drop in progress route change when new route change occurs', function() { + module(function($routeProvider) { + $routeProvider. + when('/r1', { template: 'r1.html' }). + when('/r2', { template: 'r2.html' }); + }); + + inject(function($route, $httpBackend, $location, $rootScope) { + var log = ''; + $rootScope.$on('$beforeRouteChange', function(e, next) { log += '$before(' + next.template + ');'}); + $rootScope.$on('$afterRouteChange', function(e, next) { log += '$after(' + next.template + ');'}); + + $httpBackend.expectGET('r1.html').respond('R1'); + $httpBackend.expectGET('r2.html').respond('R2'); + + $location.path('/r1'); + $rootScope.$digest(); + expect(log).toBe('$before(r1.html);'); + + $location.path('/r2'); + $rootScope.$digest(); + expect(log).toBe('$before(r1.html);$before(r2.html);'); + + $httpBackend.flush(); + expect(log).toBe('$before(r1.html);$before(r2.html);$after(r2.html);'); + expect(log).not.toContain('$after(r1.html);'); + }); + }); + + + it('should drop in progress route change when new route change occurs and old fails', function() { + module(function($routeProvider) { + $routeProvider. + when('/r1', { templateUrl: 'r1.html' }). + when('/r2', { templateUrl: 'r2.html' }); + }); + + inject(function($route, $httpBackend, $location, $rootScope) { + var log = ''; + $rootScope.$on('$failedRouteChange', function(e, next, last, error) { + log += '$failed(' + next.templateUrl + ', ' + error.status + ');'; + }); + $rootScope.$on('$beforeRouteChange', function(e, next) { log += '$before(' + next.templateUrl + ');'}); + $rootScope.$on('$afterRouteChange', function(e, next) { log += '$after(' + next.templateUrl + ');'}); + + $httpBackend.expectGET('r1.html').respond(404, 'R1'); + $httpBackend.expectGET('r2.html').respond('R2'); + + $location.path('/r1'); + $rootScope.$digest(); + expect(log).toBe('$before(r1.html);'); + + $location.path('/r2'); + $rootScope.$digest(); + expect(log).toBe('$before(r1.html);$before(r2.html);'); + + $httpBackend.flush(); + expect(log).toBe('$before(r1.html);$before(r2.html);$after(r2.html);'); + expect(log).not.toContain('$after(r1.html);'); + }); + }); + + + it('should catch local factory errors', function() { + var myError = new Error('MyError'); + module(function($routeProvider, $exceptionHandlerProvider) { + $exceptionHandlerProvider.mode('log'); + $routeProvider.when('/locals', { + resolve: { + a: function($q) { + throw myError; + } + } + }); + }); + + inject(function($location, $route, $rootScope, $exceptionHandler) { + $location.path('/locals'); + $rootScope.$digest(); + expect($exceptionHandler.errors).toEqual([myError]); + }); + }); + }); + + it('should match route with and without trailing slash', function() { module(function($routeProvider){ $routeProvider.when('/foo', {template: 'foo.html'}); From 8b9d101b501c9f02e51a88400f415f170dcb5c83 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Thu, 17 May 2012 16:36:18 -0700 Subject: [PATCH 09/14] feat($route): rename template -> tempalteUrl and add support for inline templates Breaks route definition by renaming property 'template' to 'templateUrl' --- docs/content/cookbook/deeplinking.ngdoc | 4 +- docs/content/tutorial/step_07.ngdoc | 4 +- example/temp.html | 4 +- src/ng/directive/ngView.js | 4 +- src/ng/route.js | 34 ++++++---- test/ng/directive/ngViewSpec.js | 67 +++++++++++++------- test/ng/routeSpec.js | 84 ++++++++++++------------- 7 files changed, 117 insertions(+), 84 deletions(-) diff --git a/docs/content/cookbook/deeplinking.ngdoc b/docs/content/cookbook/deeplinking.ngdoc index 491e3b799a7d..1e9c01616cfe 100644 --- a/docs/content/cookbook/deeplinking.ngdoc +++ b/docs/content/cookbook/deeplinking.ngdoc @@ -35,8 +35,8 @@ In this example we have a simple app which consist of two screens: angular.module('deepLinking', ['ngSanitize']) .config(function($routeProvider) { $routeProvider. - when("/welcome", {template:'welcome.html', controller:WelcomeCntl}). - when("/settings", {template:'settings.html', controller:SettingsCntl}); + when("/welcome", {templateUrl:'welcome.html', controller:WelcomeCntl}). + when("/settings", {templateUrl:'settings.html', controller:SettingsCntl}); }); AppCntl.$inject = ['$scope', '$route'] diff --git a/docs/content/tutorial/step_07.ngdoc b/docs/content/tutorial/step_07.ngdoc index f8b5cf527072..f0812278445e 100644 --- a/docs/content/tutorial/step_07.ngdoc +++ b/docs/content/tutorial/step_07.ngdoc @@ -72,8 +72,8 @@ __`app/js/app.js`:__ angular.module('phonecat', []). config(['$routeProvider', function($routeProvider) { $routeProvider. - when('/phones', {template: 'partials/phone-list.html', controller: PhoneListCtrl}). - when('/phones/:phoneId', {template: 'partials/phone-detail.html', controller: PhoneDetailCtrl}). + when('/phones', {templateUrl: 'partials/phone-list.html', controller: PhoneListCtrl}). + when('/phones/:phoneId', {templateUrl: 'partials/phone-detail.html', controller: PhoneDetailCtrl}). otherwise({redirectTo: '/phones'}); }]); diff --git a/example/temp.html b/example/temp.html index 22eb2de7da31..da92c68ccf3c 100644 --- a/example/temp.html +++ b/example/temp.html @@ -6,8 +6,8 @@