handle shorthand properties in expressions (fixes #296)

pull/305/head
Rich Harris 8 years ago
parent dc4e929b77
commit 796af04cac

@ -46,7 +46,7 @@ export default class Generator {
const { contextDependencies, contexts, indexes } = this.current;
walk( expression, {
enter ( node, parent ) {
enter ( node, parent, key ) {
if ( isReference( node, parent ) ) {
const { name } = flattenReference( node );
@ -69,6 +69,14 @@ export default class Generator {
}
else {
// handle shorthand properties
if ( parent.type === 'Property' && parent.shorthand ) {
if ( key === 'key' ) {
code.appendLeft( node.start, `${name}: ` );
return;
}
}
if ( globalWhitelist[ name ] ) {
code.prependRight( node.start, `( '${name}' in root ? root.` );
code.appendLeft( node.object.end, ` : ${name} )` );

@ -0,0 +1,27 @@
export default {
html: `<button>click me</button>`,
data: {
foo: 42
},
test ( assert, component, target, window ) {
const event = new window.MouseEvent( 'click' );
const button = target.querySelector( 'button' );
let count = 0;
let number = null;
component.on( 'foo', obj => {
count++;
number = obj.foo;
});
button.dispatchEvent( event );
assert.equal( count, 1 );
assert.equal( number, 42 );
component.teardown();
}
};

@ -0,0 +1 @@
<button on:click='fire("foo", { foo })'>click me</button>
Loading…
Cancel
Save