@@ -26,100 +26,6 @@ abstract class ViewFactory implements Function {
26
26
View call (Scope scope, DirectiveInjector directiveInjector, [List <dom.Node > elements]);
27
27
}
28
28
29
- /**
30
- * [WalkingViewFactory] is used to create new [View] s. WalkingViewFactory is
31
- * created by the [Compiler] as a result of compiling a template.
32
- */
33
- class WalkingViewFactory implements ViewFactory {
34
- final List <ElementBinderTreeRef > elementBinders;
35
- final List <dom.Node > templateElements;
36
- final Profiler _perf;
37
- final Expando _expando;
38
-
39
- WalkingViewFactory (this .templateElements, this .elementBinders, this ._perf,
40
- this ._expando) {
41
- assert (elementBinders.every ((ElementBinderTreeRef eb) =>
42
- eb is ElementBinderTreeRef ));
43
- }
44
-
45
- BoundViewFactory bind (DirectiveInjector directiveInjector) =>
46
- new BoundViewFactory (this , directiveInjector);
47
-
48
- View call (Scope scope, DirectiveInjector directiveInjector, [List <dom.Node > nodes]) {
49
- assert (directiveInjector != null );
50
- if (nodes == null ) nodes = cloneElements (templateElements);
51
- var timerId;
52
- try {
53
- assert ((timerId = _perf.startTimer ('ng.view' )) != false );
54
- EventHandler eventHandler = directiveInjector.getByKey (EVENT_HANDLER_KEY );
55
- Animate animate = directiveInjector.getByKey (ANIMATE_KEY );
56
- var view = new View (nodes, scope, eventHandler);
57
- _link (view, scope, nodes, elementBinders, eventHandler, animate, directiveInjector);
58
- return view;
59
- } finally {
60
- assert (_perf.stopTimer (timerId) != false );
61
- }
62
- }
63
-
64
- View _link (View view, Scope scope, List <dom.Node > nodeList, List elementBinders,
65
- EventHandler eventHandler, Animate animate,
66
- DirectiveInjector directiveInjector) {
67
-
68
- var preRenderedIndexOffset = 0 ;
69
- var directiveDefsByName = {};
70
-
71
- for (int i = 0 ; i < elementBinders.length; i++ ) {
72
- // querySelectorAll('.ng-binding') should return a list of nodes in the
73
- // same order as the elementBinders list.
74
-
75
- // keep a injector array --
76
-
77
- var eb = elementBinders[i];
78
- int index = eb.offsetIndex;
79
-
80
- ElementBinderTree tree = eb.subtree;
81
-
82
- //List childElementBinders = eb.childElementBinders;
83
- int nodeListIndex = index + preRenderedIndexOffset;
84
- dom.Node node = nodeList[nodeListIndex];
85
- var binder = tree.binder;
86
-
87
- var timerId;
88
- try {
89
- assert ((timerId = _perf.startTimer ('ng.view.link' , _html (node))) != false );
90
- // if node isn't attached to the DOM, create a parent for it.
91
- var parentNode = node.parentNode;
92
- var fakeParent = false ;
93
- if (parentNode == null ) {
94
- fakeParent = true ;
95
- parentNode = new dom.DivElement ()..append (node);
96
- }
97
-
98
- DirectiveInjector childInjector;
99
- if (binder == null ) {
100
- childInjector = directiveInjector;
101
- } else {
102
- childInjector = binder.bind (view, scope, directiveInjector, node, eventHandler, animate);
103
-
104
- // TODO(misko): Remove this after we remove controllers. No controllers -> 1to1 Scope:View.
105
- if (childInjector != directiveInjector) scope = childInjector.scope;
106
- }
107
- if (fakeParent) {
108
- // extract the node from the parentNode.
109
- nodeList[nodeListIndex] = parentNode.nodes[0 ];
110
- }
111
-
112
- if (tree.subtrees != null ) {
113
- _link (view, scope, node.nodes, tree.subtrees, eventHandler, animate, childInjector);
114
- }
115
- } finally {
116
- assert (_perf.stopTimer (timerId) != false );
117
- }
118
- }
119
- return view;
120
- }
121
- }
122
-
123
29
/**
124
30
* ViewCache is used to cache the compilation of templates into [View] s.
125
31
* It can be used synchronously if HTML is known or asynchronously if the
0 commit comments