Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Unified Diff: third_party/pkg/angular/lib/bootstrap.dart

Issue 176943008: Update the Angular/DI tests to latest from github. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/pkg/angular/lib/bootstrap.dart
diff --git a/third_party/pkg/angular/lib/bootstrap.dart b/third_party/pkg/angular/lib/bootstrap.dart
index b1cfc2ca70dd9ac3d18a184ef4235bf7be6ed5ab..c4d0bf117e42b773af99d84672b925db5cf03464 100644
--- a/third_party/pkg/angular/lib/bootstrap.dart
+++ b/third_party/pkg/angular/lib/bootstrap.dart
@@ -23,6 +23,7 @@ class AngularModule extends Module {
type(MetadataExtractor);
value(Expando, _elementExpando);
+ value(NgApp, new NgApp(dom.window.document.documentElement));
}
}
@@ -46,7 +47,7 @@ Injector _defaultInjectorFactory(List<Module> modules) =>
* - [modules] Optional list of [Module]s to add to the [Injector] (if more than one is needed).
* - [element] Optional root element of the application. If non specified, the
* the root element is looked up using the [selector]. If selector can not
- * identify a root, the root [HTTML] element is used for bootstraping.
+ * identify a root, the root [HTML] element is used for bootstraping.
* - [selector] Optional CSS selector used to locate the root element for the application.
* - [injectorFactor] Optional factory responsible for creating the injector.
*
@@ -60,11 +61,11 @@ Injector _defaultInjectorFactory(List<Module> modules) =>
* Injector injector = ngBootstrap(module: myAppModule);
*/
Injector ngBootstrap({
- Module module: null,
- List<Module> modules: null,
- dom.Element element: null,
- String selector: '[ng-app]',
- Injector injectorFactory(List<Module> modules): _defaultInjectorFactory}) {
+ Module module: null,
+ List<Module> modules: null,
+ dom.Element element: null,
+ String selector: '[ng-app]',
+ Injector injectorFactory(List<Module> modules): _defaultInjectorFactory}) {
_publishToJavaScript();
var ngModules = [new AngularModule()];
@@ -73,18 +74,29 @@ Injector ngBootstrap({
if (element == null) {
element = dom.querySelector(selector);
var document = dom.window.document;
- if (element == null) element = document.childNodes.firstWhere((e) => e is dom.Element);
+ if (element == null) {
+ element = document.childNodes.firstWhere((e) => e is dom.Element);
+ }
}
// The injector must be created inside the zone, so we create the
// zone manually and give it back to the injector as a value.
NgZone zone = new NgZone();
- ngModules.add(new Module()..value(NgZone, zone));
+ ngModules.add(new Module()
+ ..value(NgZone, zone)
+ ..value(NgApp, new NgApp(element)));
return zone.run(() {
var rootElements = [element];
Injector injector = injectorFactory(ngModules);
- injector.get(Compiler)(rootElements)(injector, rootElements);
+ injector.get(Compiler)(rootElements, injector.get(DirectiveMap))
+ (injector, rootElements);
return injector;
});
}
+
+/// Holds a reference to the root of the application used by ngBootstrap.
+class NgApp {
+ final dom.Element root;
+ NgApp(this.root);
+}

Powered by Google App Engine
This is Rietveld 408576698