Added import attribute to page module. (#3009)

This commit is contained in:
vB Results, LLC
2016-11-07 17:37:47 +08:00
committed by Vladimir Enchev
parent f63f61ce77
commit fbe5f2cab1
2 changed files with 20 additions and 0 deletions

View File

@@ -168,6 +168,13 @@ export function test_parse_ShouldResolveExportsFromCodeFile() {
TKUnit.assert((<any>page).customCodeLoaded, "Parse should resolve exports from custom code file.");
}
export function test_parse_ShouldResolveExportsFromImport() {
var page = builder.parse("<Page import='~/xml-declaration/custom-code-file' loaded='loaded'></Page>");
page._emit("loaded");
TKUnit.assert((<any>page).customCodeLoaded, "Parse should resolve exports from import.");
}
export function test_parse_ShouldResolveExportsFromCodeFileForPageContent() {
var page = builder.parse("<Page codeFile='~/xml-declaration/custom-code-file' loaded='loaded'><Button loaded='loaded' /></Page>");
(<any>page).content._emit("loaded");

View File

@@ -28,6 +28,8 @@ var MODULES = {
var CODEFILE = "codeFile";
var CSSFILE = "cssFile";
var IMPORT = "import";
var platform: typeof platformModule;
function ensurePlatform() {
if (!platform) {
@@ -82,6 +84,17 @@ export function getComponentModule(elementName: string, namespace: string, attri
}
if (attributes) {
if (attributes[IMPORT]) {
var importPath = attributes[IMPORT].trim();
if (importPath.indexOf("~/") === 0) {
importPath = path.join(knownFolders.currentApp().path, importPath.replace("~/", ""));
}
exports = global.loadModule(importPath);
(<any>instance).exports = exports;
}
if (attributes[CODEFILE]) {
if (instance instanceof Page) {
var codeFilePath = attributes[CODEFILE].trim();