diff --git a/src/compile/render-dom/wrappers/Element/index.ts b/src/compile/render-dom/wrappers/Element/index.ts index 7bca57fa0a..311c99aabf 100644 --- a/src/compile/render-dom/wrappers/Element/index.ts +++ b/src/compile/render-dom/wrappers/Element/index.ts @@ -403,7 +403,9 @@ export default class ElementWrapper extends Wrapper { const groups = events .map(event => ({ events: event.eventNames, - bindings: mungedBindings.filter(binding => event.filter(this.node, binding.name)) + bindings: mungedBindings + .filter(binding => binding.name !== 'this') + .filter(binding => event.filter(this.node, binding.name)) })) .filter(group => group.bindings.length); diff --git a/test/runtime/samples/binding-this-and-value/_config.js b/test/runtime/samples/binding-this-and-value/_config.js new file mode 100644 index 0000000000..70cc8d4110 --- /dev/null +++ b/test/runtime/samples/binding-this-and-value/_config.js @@ -0,0 +1,24 @@ +export default { + html: ` + +
value: initial
+ `, + + ssrHtml: ` + +value: initial
+ `, + + async test({ assert, target, window }) { + const input = target.querySelector('input'); + const event = new window.Event('input'); + + input.value = 'changed'; + await input.dispatchEvent(event); + + assert.htmlEqual(target.innerHTML, ` + +value: changed
+ `); + } +}; diff --git a/test/runtime/samples/binding-this-and-value/main.html b/test/runtime/samples/binding-this-and-value/main.html new file mode 100644 index 0000000000..c56509eb7a --- /dev/null +++ b/test/runtime/samples/binding-this-and-value/main.html @@ -0,0 +1,7 @@ + + + +value: {value}