Evan You 9 лет назад
Родитель
Сommit
7f6c889a88
1 измененных файлов с 13 добавлено и 11 удалено
  1. 13 11
      src/compiler/codegen/events.js

+ 13 - 11
src/compiler/codegen/events.js

@@ -16,20 +16,22 @@ const keyCodes: { [key: string]: number | Array<number> } = {
   'delete': [8, 46]
 }
 
+// #4868: modifiers that prevent the execution of the listener
+// need to explicitly return null so that we can determine whether to remove
+// the listener for .once
+const genGuard = condition => `if(${condition})return null;`
+
 const modifierCode: { [key: string]: string } = {
   stop: '$event.stopPropagation();',
   prevent: '$event.preventDefault();',
-  // #4868: modifiers that prevent the execution of the listener
-  // need to explicitly return null so that we can determine whether to remove
-  // the listener for .once
-  self: 'if($event.target !== $event.currentTarget)return null;',
-  ctrl: 'if(!$event.ctrlKey)return null;',
-  shift: 'if(!$event.shiftKey)return null;',
-  alt: 'if(!$event.altKey)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;'
+  self: genGuard(`$event.target !== $event.currentTarget`),
+  ctrl: genGuard(`!$event.ctrlKey`),
+  shift: genGuard(`!$event.shiftKey`),
+  alt: genGuard(`!$event.altKey`),
+  meta: genGuard(`!$event.metaKey`),
+  left: genGuard(`$event.button !== 0`),
+  middle: genGuard(`$event.button !== 1`),
+  right: genGuard(`$event.button !== 2`)
 }
 
 export function genHandlers (events: ASTElementHandlers, native?: boolean): string {