attempt to fix #1214

pull/1232/head
Rich Harris 8 years ago
parent 0ac77019d0
commit 8171c1935c

@ -166,7 +166,7 @@ export default function dom(
? `@proto`
: deindent`
{
${['destroy', 'get', 'fire', 'observe', 'on', 'set', 'teardown', '_set', '_mount', '_unmount', '_differs']
${['destroy', 'get', 'fire', 'observe', 'on', 'set', 'teardown', '_set', '_mount', '_unmount', '_differs', '_flush']
.map(n => `${n}: @${n === 'teardown' ? 'destroy' : n}`)
.join(',\n')}
}`;
@ -275,11 +275,7 @@ export default function dom(
this._mount(options.target, options.anchor);
${(generator.hasComponents || generator.hasComplexBindings || templateProperties.oncreate || generator.hasIntroTransitions) && deindent`
${generator.hasComponents && `this._lock = true;`}
${(generator.hasComponents || generator.hasComplexBindings) && `@callAll(this._beforecreate);`}
${(generator.hasComponents || templateProperties.oncreate) && `@callAll(this._oncreate);`}
${(generator.hasComponents || generator.hasIntroTransitions) && `@callAll(this._aftercreate);`}
${generator.hasComponents && `this._lock = false;`}
this._flush();
`}
}
`}

@ -209,7 +209,7 @@ export default class Component extends Node {
);
builder.addConditional(
`!${name_updating}.${binding.name} && changed.${binding.name}`,
`changed.${binding.name}`,
setFromChild
);

@ -145,6 +145,10 @@ export function run(fn) {
export function set(newState) {
this._set(assign({}, newState));
if (this.root._lock) return;
this.root._flush();
}
export function _flush() {
this.root._lock = true;
callAll(this.root._beforecreate);
callAll(this.root._oncreate);
@ -220,7 +224,8 @@ export var proto = {
_set: _set,
_mount: _mount,
_unmount: _unmount,
_differs: _differs
_differs: _differs,
_flush: _flush
};
export var protoDev = {
@ -235,5 +240,6 @@ export var protoDev = {
_set: _set,
_mount: _mount,
_unmount: _unmount,
_differs: _differs
_differs: _differs,
_flush: _flush
};

@ -0,0 +1,7 @@
<script>
export default {
oncreate() {
this.set({text: 'correct'});
}
};
</script>

@ -0,0 +1,7 @@
export default {
'skip-ssr': true,
html: `
<p>Text: correct</p>
`
};

@ -0,0 +1,20 @@
<:Component {Child} bind:text=text />
<p>Text: {{text}}</p>
<script>
import Nested from './Nested.html';
export default {
data: () => ({
text: 'incorrect',
Child: null,
}),
oncreate() {
this.set({
Child: Nested
});
},
};
</script>
Loading…
Cancel
Save