From b8ddb16d5fcc1397f070d26297c47f5554951073 Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Sat, 19 Nov 2016 19:25:57 -0500 Subject: [PATCH] lifecycle methods --- compiler/generate/index.js | 6 ++++++ test/compiler/lifecycle-events/_config.js | 9 +++++++++ test/compiler/lifecycle-events/main.svelte | 17 +++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 test/compiler/lifecycle-events/_config.js create mode 100644 test/compiler/lifecycle-events/main.svelte diff --git a/compiler/generate/index.js b/compiler/generate/index.js index 5e8e23bde3..b2fa544450 100644 --- a/compiler/generate/index.js +++ b/compiler/generate/index.js @@ -617,11 +617,17 @@ export default function generate ( parsed, template ) { mainFragment = null; state = {}; + + ${templateProperties.onteardown ? `template.onteardown.call( component );` : ``} }; + ${templateProperties.oninit ? `template.oninit.call( component );` : ``} + let mainFragment = renderMainFragment( component, options.target ); component.set( ${templateProperties.data ? `Object.assign( template.data(), options.data )` : `options.data`} ); + ${templateProperties.onrender ? `template.onrender.call( component );` : ``} + return component; } `; diff --git a/test/compiler/lifecycle-events/_config.js b/test/compiler/lifecycle-events/_config.js new file mode 100644 index 0000000000..ae13dd2e2c --- /dev/null +++ b/test/compiler/lifecycle-events/_config.js @@ -0,0 +1,9 @@ +import * as assert from 'assert'; + +export default { + test ( component ) { + assert.deepEqual( component.events, [ 'init', 'render' ]); + component.teardown(); + assert.deepEqual( component.events, [ 'init', 'render', 'teardown' ]); + } +}; diff --git a/test/compiler/lifecycle-events/main.svelte b/test/compiler/lifecycle-events/main.svelte new file mode 100644 index 0000000000..dc56c8e27a --- /dev/null +++ b/test/compiler/lifecycle-events/main.svelte @@ -0,0 +1,17 @@ +
+ +