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

Side by Side Diff: third_party/pkg/angular/lib/bootstrap.dart

Issue 1058283006: Update pubspecs and dependencies to get pkgbuild tests working. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 part of angular;
2
3 /**
4 * This is the top level module which describes the whole of angular.
5 *
6 * The Module is made up of
7 *
8 * - [NgCoreModule]
9 * - [NgCoreDomModule]
10 * - [NgDirectiveModule]
11 * - [NgFilterModule]
12 * - [NgPerfModule]
13 * - [NgRoutingModule]
14 */
15 class AngularModule extends Module {
16 AngularModule() {
17 install(new NgCoreModule());
18 install(new NgCoreDomModule());
19 install(new NgDirectiveModule());
20 install(new NgFilterModule());
21 install(new NgPerfModule());
22 install(new NgRoutingModule());
23
24 type(MetadataExtractor);
25 value(Expando, _elementExpando);
26 value(NgApp, new NgApp(dom.window.document.documentElement));
27 }
28 }
29
30 Injector _defaultInjectorFactory(List<Module> modules) =>
31 new DynamicInjector(modules: modules);
32
33 /**
34 * This method is the main entry point to an angular application.
35 *
36 * # The [ngBootstrap] is responsible for:
37 *
38 * 1. Locating the root element of the application,
39 * 2. Creating Angular [NgZone]
40 * 3. Inside the [NgZone] create an injector
41 * 4. Retrieve the [Compiler] and compile the root eleement
42 *
43 *
44 * # Parameters:
45 *
46 * - [module] Option application module to add to the [Injector].
47 * - [modules] Optional list of [Module]s to add to the [Injector] (if more th an one is needed).
48 * - [element] Optional root element of the application. If non specified, the
49 * the root element is looked up using the [selector]. If selector can not
50 * identify a root, the root [HTML] element is used for bootstraping.
51 * - [selector] Optional CSS selector used to locate the root element for the application.
52 * - [injectorFactor] Optional factory responsible for creating the injector.
53 *
54 *
55 *
56 * # A typical way to boostrap an Angular application:
57 *
58 * Module myAppModule = new Module();
59 * myAppModule.type(MyType);
60 * ....
61 * Injector injector = ngBootstrap(module: myAppModule);
62 */
63 Injector ngBootstrap({
64 Module module: null,
65 List<Module> modules: null,
66 dom.Element element: null,
67 String selector: '[ng-app]',
68 Injector injectorFactory(List<Module> modules): _defaultInjectorFactory}) {
69 _publishToJavaScript();
70
71 var ngModules = [new AngularModule()];
72 if (module != null) ngModules.add(module);
73 if (modules != null) ngModules.addAll(modules);
74 if (element == null) {
75 element = dom.querySelector(selector);
76 var document = dom.window.document;
77 if (element == null) {
78 element = document.childNodes.firstWhere((e) => e is dom.Element);
79 }
80 }
81
82 // The injector must be created inside the zone, so we create the
83 // zone manually and give it back to the injector as a value.
84 NgZone zone = new NgZone();
85 ngModules.add(new Module()
86 ..value(NgZone, zone)
87 ..value(NgApp, new NgApp(element)));
88
89 return zone.run(() {
90 var rootElements = [element];
91 Injector injector = injectorFactory(ngModules);
92 injector.get(Compiler)(rootElements, injector.get(DirectiveMap))
93 (injector, rootElements);
94 return injector;
95 });
96 }
97
98 /// Holds a reference to the root of the application used by ngBootstrap.
99 class NgApp {
100 final dom.Element root;
101 NgApp(this.root);
102 }
OLDNEW
« no previous file with comments | « third_party/pkg/angular/lib/angular.dart ('k') | third_party/pkg/angular/lib/change_detection/ast.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698