Merge pull request #579 from NativeScript/hhristov/builder-fix

Fix builder issue where builder doesn't pop complex properties correc…
This commit is contained in:
Hristo Hristov
2015-08-13 13:53:54 +03:00
2 changed files with 26 additions and 12 deletions

View File

@ -481,17 +481,25 @@ export function test_parse_ShouldParseNestedListViewInListViewTemplate() {
export function test_parse_NestedRepeaters() { export function test_parse_NestedRepeaters() {
var pageXML = var pageXML =
"<Page xmlns='http://www.nativescript.org/tns.xsd'>" + "<Page xmlns='http://www.nativescript.org/tns.xsd'>" +
" <Repeater items='{{ $value }}'>" + " <TabView>" +
" <Repeater.itemTemplate>" + " <TabView.items>" +
" <StackLayout>" + " <TabViewItem title='List'>" +
" <Repeater items='{{ $value }}'>" + " <TabViewItem.view>" +
" <Repeater.itemTemplate>" + " <Repeater items='{{ $value }}'>" +
" <Label text='{{ $value }}'/>" + " <Repeater.itemTemplate>" +
" </Repeater.itemTemplate>" + " <StackLayout>" +
" </Repeater>" + " <Repeater items='{{ $value }}'>" +
" </StackLayout>" + " <Repeater.itemTemplate>" +
" </Repeater.itemTemplate>" + " <Label text='{{ $value }}'/>" +
" </Repeater>" + " </Repeater.itemTemplate>" +
" </Repeater>" +
" </StackLayout>" +
" </Repeater.itemTemplate>" +
" </Repeater>" +
" </TabViewItem.view>" +
" </TabViewItem>" +
" </TabView.items>" +
" </TabView>" +
"</Page>"; "</Page>";
var p = <Page>builder.parse(pageXML); var p = <Page>builder.parse(pageXML);

View File

@ -77,14 +77,20 @@ function parseInternal(value: string, context: any): componentBuilder.ComponentM
if (templateBuilder) { if (templateBuilder) {
if (args.eventType === xml.ParserEventType.StartElement) { if (args.eventType === xml.ParserEventType.StartElement) {
templateBuilder.addStartElement(args.prefix, args.namespace, args.elementName, args.attributes); templateBuilder.addStartElement(args.prefix, args.namespace, args.elementName, args.attributes);
return;
} else if (args.eventType === xml.ParserEventType.EndElement) { } else if (args.eventType === xml.ParserEventType.EndElement) {
templateBuilder.addEndElement(args.prefix, args.elementName); templateBuilder.addEndElement(args.prefix, args.elementName);
if (templateBuilder.hasFinished()) { if (templateBuilder.hasFinished()) {
templateBuilder.build(); templateBuilder.build();
templateBuilder = undefined; templateBuilder = undefined;
} }
else {
return;
}
}
else {
return;
} }
return;
} }
// Get the current parent. // Get the current parent.