diff --git a/src/compiler/codegen/events.js b/src/compiler/codegen/events.js index 28e454241aa..03a5dbc7030 100644 --- a/src/compiler/codegen/events.js +++ b/src/compiler/codegen/events.js @@ -26,7 +26,10 @@ const modifierCode: { [key: string]: string } = { ctrl: 'if(!$event.ctrlKey)return null;', shift: 'if(!$event.shiftKey)return null;', alt: 'if(!$event.altKey)return null;', - meta: 'if(!$event.metaKey)return null;' + meta: 'if(!$event.metaKey)return null;', + left: 'if($event.button !== 0)return null;', + middle: 'if($event.button !== 1)return null;', + right: 'if($event.button !== 2)return null;' } export function genHandlers (events: ASTElementHandlers, native?: boolean): string { diff --git a/test/unit/features/directives/on.spec.js b/test/unit/features/directives/on.spec.js index cadccfada2d..e518e63f1f7 100644 --- a/test/unit/features/directives/on.spec.js +++ b/test/unit/features/directives/on.spec.js @@ -212,6 +212,49 @@ describe('Directive v-on', () => { expect(spy).toHaveBeenCalled() }) + it('should support mouse modifier', () => { + const left = 0 + const middle = 1 + const right = 2 + const spyLeft = jasmine.createSpy() + const spyMiddle = jasmine.createSpy() + const spyRight = jasmine.createSpy() + + vm = new Vue({ + el, + template: ` +