@@ -18,29 +18,31 @@ class TaggingViewFactory implements ViewFactory {
18
18
try {
19
19
assert ((timerId = _perf.startTimer ('ng.view' )) != false );
20
20
var view = new View (nodes, injector.get (EventHandler ));
21
- _link (view, nodes, elementBinders, injector);
21
+ _link (view, nodes, injector);
22
22
return view;
23
23
} finally {
24
24
assert (_perf.stopTimer (timerId) != false );
25
25
}
26
26
}
27
27
28
- _bindTagged (TaggedElementBinder tagged, rootInjector, elementBinders , View view, boundNode) {
28
+ _bindTagged (TaggedElementBinder tagged, int elementBinderIndex, rootInjector, elementInjectors , View view, boundNode) {
29
29
var binder = tagged.binder;
30
- var parentInjector = tagged.parentBinderOffset == - 1 ? rootInjector : elementBinders [tagged.parentBinderOffset].injector ;
30
+ var parentInjector = tagged.parentBinderOffset == - 1 ? rootInjector : elementInjectors [tagged.parentBinderOffset];
31
31
assert (parentInjector != null );
32
32
33
- tagged.injector = binder != null ? binder.bind (view, parentInjector, boundNode) : parentInjector;
33
+ var elementInjector = elementInjectors[elementBinderIndex] =
34
+ binder != null ? binder.bind (view, parentInjector, boundNode) : parentInjector;
34
35
35
36
if (tagged.textBinders != null ) {
36
37
for (var k = 0 , kk = tagged.textBinders.length; k < kk; k++ ) {
37
38
TaggedTextBinder taggedText = tagged.textBinders[k];
38
- taggedText.binder.bind (view, tagged.injector , boundNode.childNodes[taggedText.offsetIndex]);
39
+ taggedText.binder.bind (view, elementInjector , boundNode.childNodes[taggedText.offsetIndex]);
39
40
}
40
41
}
41
42
}
42
43
43
- View _link (View view, List <dom.Node > nodeList, List elementBinders, Injector rootInjector) {
44
+ View _link (View view, List <dom.Node > nodeList, Injector rootInjector) {
45
+ var elementInjectors = new List (elementBinders.length);
44
46
var directiveDefsByName = {};
45
47
46
48
var elementBinderIndex = 0 ;
@@ -64,13 +66,13 @@ class TaggingViewFactory implements ViewFactory {
64
66
TaggedElementBinder tagged = elementBinders[elementBinderIndex];
65
67
var boundNode = j == - 1 ? node : elts[j];
66
68
67
- _bindTagged (tagged, rootInjector, elementBinders , view, boundNode);
69
+ _bindTagged (tagged, elementBinderIndex, rootInjector, elementInjectors , view, boundNode);
68
70
}
69
71
} else if (node.nodeType == 3 || node.nodeType == 8 ) {
70
72
TaggedElementBinder tagged = elementBinders[elementBinderIndex];
71
73
assert (tagged.binder != null || tagged.isTopLevel);
72
74
if (tagged.binder != null ) {
73
- _bindTagged (tagged, rootInjector, elementBinders , view, node);
75
+ _bindTagged (tagged, elementBinderIndex, rootInjector, elementInjectors , view, node);
74
76
}
75
77
elementBinderIndex++ ;
76
78
} else {
0 commit comments