import { observable } from "aurelia-binding"; export class App { @observable() public jsRaw: string; public html: string; public context: any; constructor() { this.jsRaw = initialJs; this.html = initialHTML; } public jsRawChanged(newValue: string, oldValue: string): void { const functionBody = `return ${newValue}`; // tslint:disable-next-line:no-function-constructor-with-string-args const ctorFactory = new Function(functionBody); const ctor = ctorFactory(); this.context = new ctor(); } } // tslint:disable:no-multiline-string const initialJs = `class Foo { constructor() { this.firstName = 'John'; this.lastName = 'Doe'; } submit() { alert('You submitted "' + this.firstName + ' ' + this.lastName + '"'); } }`; const initialHTML = `
Your name is:

\${firstName} \${lastName}

`;