@@ -19,7 +19,8 @@ class TaggingCompiler implements Compiler {
19
19
DirectiveMap directives,
20
20
int parentElementBinderOffset,
21
21
TaggedElementBinder directParentElementBinder,
22
- List <TaggedElementBinder > elementBinders) {
22
+ List <TaggedElementBinder > elementBinders,
23
+ bool isTopLevel) {
23
24
assert (parentElementBinderOffset != null );
24
25
assert (parentElementBinderOffset < elementBinders.length);
25
26
if (domCursor.current == null ) return null ;
@@ -55,7 +56,7 @@ class TaggingCompiler implements Compiler {
55
56
int taggedElementBinderIndex = parentElementBinderOffset;
56
57
if (elementBinder.hasDirectivesOrEvents || elementBinder.hasTemplate) {
57
58
taggedElementBinder = _addBinder (elementBinders,
58
- new TaggedElementBinder (elementBinder, parentElementBinderOffset));
59
+ new TaggedElementBinder (elementBinder, parentElementBinderOffset, isTopLevel ));
59
60
taggedElementBinderIndex = elementBinders.length - 1 ;
60
61
61
62
// TODO(deboer): Hack, this sucks.
@@ -72,11 +73,11 @@ class TaggingCompiler implements Compiler {
72
73
addedDummy = true ;
73
74
// add a dummy to the list which may be removed later.
74
75
taggedElementBinder = _addBinder (elementBinders,
75
- new TaggedElementBinder (null , parentElementBinderOffset));
76
+ new TaggedElementBinder (null , parentElementBinderOffset, isTopLevel ));
76
77
}
77
78
78
79
_compileView (domCursor, templateCursor, null , directives,
79
- taggedElementBinderIndex, taggedElementBinder, elementBinders);
80
+ taggedElementBinderIndex, taggedElementBinder, elementBinders, false );
80
81
81
82
if (addedDummy && ! _isDummyBinder (taggedElementBinder)) {
82
83
// We are keeping the element binder, so add the class
@@ -106,7 +107,7 @@ class TaggingCompiler implements Compiler {
106
107
templateCursor.current.parentNode != null )) {
107
108
// Always add an elementBinder for top-level text.
108
109
_addBinder (elementBinders, new TaggedElementBinder (elementBinder,
109
- parentElementBinderOffset));
110
+ parentElementBinderOffset, isTopLevel ));
110
111
}
111
112
} else {
112
113
throw "Unsupported node type for $node : [${node .nodeType }]" ;
@@ -130,7 +131,7 @@ class TaggingCompiler implements Compiler {
130
131
var domCursorIndex = domCursor.index;
131
132
var elementBinders = [];
132
133
_compileView (domCursor, transcludeCursor, transcludedElementBinder,
133
- directives, - 1 , null , elementBinders);
134
+ directives, - 1 , null , elementBinders, true );
134
135
135
136
viewFactory = new TaggingViewFactory (transcludeCursor.elements,
136
137
_removeUnusedBinders (elementBinders), _perf, _expando);
@@ -160,7 +161,7 @@ class TaggingCompiler implements Compiler {
160
161
final elementBinders = < TaggedElementBinder > [];
161
162
_compileView (
162
163
new NodeCursor (domElements), new NodeCursor (templateElements),
163
- null , directives, - 1 , null , elementBinders);
164
+ null , directives, - 1 , null , elementBinders, true );
164
165
165
166
var viewFactory = new TaggingViewFactory (
166
167
templateElements, _removeUnusedBinders (elementBinders), _perf, _expando);
@@ -170,7 +171,7 @@ class TaggingCompiler implements Compiler {
170
171
}
171
172
172
173
_isDummyBinder (TaggedElementBinder binder) =>
173
- binder.binder == null && binder.textBinders == null ;
174
+ binder.binder == null && binder.textBinders == null && ! binder.isTopLevel ;
174
175
175
176
_removeUnusedBinders (List <TaggedElementBinder > binders) {
176
177
// In order to support text nodes with directiveless parents, we
0 commit comments