Skip to content
This repository has been archived by the owner on Apr 12, 2024. It is now read-only.

Commit

Permalink
feat(JQLite): ready() now supports document.readyState=='complete'
Browse files Browse the repository at this point in the history
JQLite.ready() used for automatic bootstrapping (when jQuery is not present)
now checks if document already is ready when first called. This simplifies
bootstrapping when the angular script is loaded asynchronously.

However if other scripts with angular app code are being loaded as well
it is developers responsibility to ensure that these scripts are loaded
after angular-loader.js is evaluated and before angular.js script is
evaluated.
  • Loading branch information
jorgenfb authored and IgorMinar committed Feb 25, 2013
1 parent 6a612df commit 753fc9e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
9 changes: 4 additions & 5 deletions docs/content/guide/bootstrap.ngdoc
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,10 @@ initialization.

# Automatic Initialization

Angular initializes automatically upon `DOMContentLoaded` event, at which point Angular looks for
the {@link api/ng.directive:ngApp `ng-app`} directive which
designates your application root. If the {@link
api/ng.directive:ngApp `ng-app`} directive is found then Angular
will:
Angular initializes automatically upon `DOMContentLoaded` event or when the `angular.js` script is
evaluated if at that time `document.readyState` is set to `'complete'`. At this point Angular looks
for the {@link api/ng.directive:ngApp `ng-app`} directive which designates your application root.
If the {@link api/ng.directive:ngApp `ng-app`} directive is found then Angular will:

* load the {@link guide/module module} associated with the directive.
* create the application {@link api/AUTO.$injector injector}
Expand Down
11 changes: 8 additions & 3 deletions src/jqLite.js
Original file line number Diff line number Diff line change
Expand Up @@ -327,9 +327,14 @@ var JQLitePrototype = JQLite.prototype = {
fn();
}

this.bind('DOMContentLoaded', trigger); // works for modern browsers and IE9
// we can not use jqLite since we are not done loading and jQuery could be loaded later.
JQLite(window).bind('load', trigger); // fallback to window.onload for others
// check if document already is loaded
if (document.readyState === 'complete'){
setTimeout(trigger);
} else {
this.bind('DOMContentLoaded', trigger); // works for modern browsers and IE9
// we can not use jqLite since we are not done loading and jQuery could be loaded later.
JQLite(window).bind('load', trigger); // fallback to window.onload for others
}
},
toString: function() {
var value = [];
Expand Down

0 comments on commit 753fc9e

Please sign in to comment.