getExports moved to builder

This commit is contained in:
Vladimir Enchev
2015-05-25 12:09:15 +03:00
parent f499ee95a8
commit 342bae570d
2 changed files with 18 additions and 13 deletions

View File

@ -10,6 +10,11 @@ var KNOWNCOLLECTIONS = "knownCollections";
export function parse(value: string, exports: any): view.View { export function parse(value: string, exports: any): view.View {
var viewToReturn: view.View; var viewToReturn: view.View;
if (exports instanceof view.View) {
exports = getExports(exports);
}
var componentModule = parseInternal(value, exports); var componentModule = parseInternal(value, exports);
if (componentModule) { if (componentModule) {
@ -150,7 +155,7 @@ function parseInternal(value: string, exports: any): componentBuilder.ComponentM
} }
} }
}, (e) => { },(e) => {
throw new Error("XML parse error: " + e.message); throw new Error("XML parse error: " + e.message);
}, true); }, true);
@ -184,7 +189,7 @@ function loadInternal(fileName: string, exports: any): componentBuilder.Componen
// Read the XML file. // Read the XML file.
fileAccess.readText(fileName, result => { fileAccess.readText(fileName, result => {
componentModule = parseInternal(result, exports); componentModule = parseInternal(result, exports);
}, (e) => { },(e) => {
throw new Error("Error loading file " + fileName + " :" + e.message); throw new Error("Error loading file " + fileName + " :" + e.message);
}); });
} }
@ -234,3 +239,13 @@ interface ComplexProperty {
name: string; name: string;
items?: Array<any>; items?: Array<any>;
} }
function getExports(instance: view.View): any {
var parent = instance.parent;
while (parent && (<any>parent).exports === undefined) {
parent = parent.parent;
}
return parent ? (<any>parent).exports : undefined;
}

View File

@ -105,7 +105,7 @@ export class ListView extends view.View implements definition.ListView {
var v; var v;
if (this.itemTemplate && this.items) { if (this.itemTemplate && this.items) {
v = builder.parse(this.itemTemplate, getExports(this)); v = builder.parse(this.itemTemplate, this);
} }
return v; return v;
@ -146,13 +146,3 @@ export class ListView extends view.View implements definition.ListView {
this.refresh(); this.refresh();
} }
} }
function getExports(instance: view.View): any {
var parent = instance.parent;
while (parent && (<any>parent).exports === undefined) {
parent = parent.parent;
}
return parent ? (<any>parent).exports : undefined;
}