@@ -18,29 +18,31 @@ class TaggingViewFactory implements ViewFactory {
1818 try {
1919 assert ((timerId = _perf.startTimer ('ng.view' )) != false );
2020 var view = new View (nodes, injector.get (EventHandler ));
21- _link (view, nodes, elementBinders, injector);
21+ _link (view, nodes, injector);
2222 return view;
2323 } finally {
2424 assert (_perf.stopTimer (timerId) != false );
2525 }
2626 }
2727
28- _bindTagged (TaggedElementBinder tagged, rootInjector, elementBinders , View view, boundNode) {
28+ _bindTagged (TaggedElementBinder tagged, int elementBinderIndex, rootInjector, elementInjectors , View view, boundNode) {
2929 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];
3131 assert (parentInjector != null );
3232
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;
3435
3536 if (tagged.textBinders != null ) {
3637 for (var k = 0 , kk = tagged.textBinders.length; k < kk; k++ ) {
3738 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]);
3940 }
4041 }
4142 }
4243
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);
4446 var directiveDefsByName = {};
4547
4648 var elementBinderIndex = 0 ;
@@ -64,13 +66,13 @@ class TaggingViewFactory implements ViewFactory {
6466 TaggedElementBinder tagged = elementBinders[elementBinderIndex];
6567 var boundNode = j == - 1 ? node : elts[j];
6668
67- _bindTagged (tagged, rootInjector, elementBinders , view, boundNode);
69+ _bindTagged (tagged, elementBinderIndex, rootInjector, elementInjectors , view, boundNode);
6870 }
6971 } else if (node.nodeType == 3 || node.nodeType == 8 ) {
7072 TaggedElementBinder tagged = elementBinders[elementBinderIndex];
7173 assert (tagged.binder != null || tagged.isTopLevel);
7274 if (tagged.binder != null ) {
73- _bindTagged (tagged, rootInjector, elementBinders , view, node);
75+ _bindTagged (tagged, elementBinderIndex, rootInjector, elementInjectors , view, node);
7476 }
7577 elementBinderIndex++ ;
7678 } else {
0 commit comments