Vue: рд╕рд╢рд░реНрдд рдШрдЯрдирд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА

рдХреЛ рдирд┐рд░реНрдорд┐рдд 31 рджрд┐рд╕ре░ 2017  ┬╖  34рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vuejs/vue

рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреА рд╣реИ?

рдЕрднреА рдЕрдЧрд░ рд╣рдо рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╢рд░реНрдд рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдИрд╡реЗрдВрдЯ рдЕрднреА рднреА рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╣рдо рдИрд╡реЗрдВрдЯ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд addEventListener рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВрдбрд▓рд░) рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд╢реБрд▓реНрдХ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдпрд╣ рджрд░реНрдж рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдорд╛рдЙрд╕ рдИрд╡реЗрдВрдЯ (рдорд╛рдЙрд╕рдУрд╡рд░, рдорд╛рдЙрд╕рдЖрдЙрдЯ) рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╕рд╛рд░реНрдердХ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреЙрдЗрдВрдЯрд░/рдорд╛рдЙрд╕ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореЛрдмрд╛рдЗрд▓ рдФрд░ рдЯрдЪ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЕрд░реНрдерд╣реАрди рд╣реИрдВред

рдЕрднреА, рдореБрдЭреЗ рдИрд╡реЗрдВрдЯ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╢рд░реНрдд рдЬреЛрдбрд╝рдиреА рд╣реЛрдЧреА (рдпрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рднреА рдХреЛрдИ рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдИрд╡реЗрдВрдЯ рдХрднреА рднреА рдЖрдЧ рдирд╣реАрдВ рд▓рдЧреЗрдВрдЧреЗ) рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рднреА рдЗрди рд╣реИрдВрдбрд▓рд░реЛрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдХреА рд╣реИ - рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореЛрдмрд╛рдЗрд▓ рдмреНрд░рд╛рдЙрдЬрд░ рдЬреИрд╕реЗ рд╕реНрдореГрддрд┐ рдмрд╛рдзрд┐рдд рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдмреЗрдХрд╛рд░ рд╣реИред

рдЗрд╡реЗрдВрдЯ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рд╕рд╢рд░реНрдд рдмрдирд╛рдХрд░ рд╣рдо рдЗрд╕рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрдкреАрдЖрдИ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ?

рдЕрдкрдиреЗ рд╕рд░рд▓рддрдо рд░реВрдк рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╣реИрдВрдбрд▓рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЭреВрдареА (рдпрд╛ рд╕рд┐рд░реНрдл рд╢реВрдиреНрдп) рдШрдЯрдирд╛ рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рд╢реЙрд░реНрдЯ-рд╕рд░реНрдХрд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд addEventListener рдСрдкрд░реЗрд╢рди рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕ рддрд░рд╣ рдШрдЯрдирд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдШреЛрд╖рдгрд╛ рдореЗрдВ рд╣реА рд╕реНрдерд┐рддрд┐ рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддреА рд╣реИ:

<div @mouseover="condition ? handler : null" /> 
feature request has PR

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ рдХрд┐рдВрдЧрд╡реЗрд▓ рдЬреЛ рдЕрднреА рднреА рд╢реНрд░реЛрддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдУрдкреА рдЯрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

@sqal рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡реИрдз рд╕рдорд╛рдзрд╛рди рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

<div v-on="{ mouseover: condition ? handler : null }">

рд╕рднреА 34 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@asiFarran

рдЕрднреА, рдореБрдЭреЗ рдИрд╡реЗрдВрдЯ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╢рд░реНрдд рдЬреЛрдбрд╝рдиреА рд╣реЛрдЧреА (рдпрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рднреА рдХреЛрдИ рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдИрд╡реЗрдВрдЯ рдХрднреА рднреА рдЖрдЧ рдирд╣реАрдВ рд▓рдЧреЗрдВрдЧреЗ)

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдФрд░ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЕрдкрдиреЗ рд╢реНрд░реЛрддрд╛ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛ рд╢рд░реНрдд рдкреВрд░реА рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рд╢реВрдиреНрдп) v-on , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: https://jsfiddle.net/c0Le92xe/

рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП?
<div @mouseover="e => condition && handler(e)" />

@ рдХрд┐рдВрдЧрд╡реЗрд▓ рдЬреЛ рдЕрднреА рднреА рд╢реНрд░реЛрддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдУрдкреА рдЯрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

@sqal рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡реИрдз рд╕рдорд╛рдзрд╛рди рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

<div v-on="{ mouseover: condition ? handler : null }">

рд╣рд╛рдВ, @sqal рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ @yyx990803 рд╢реЛ рдЬреИрд╕реЗ рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдорди рдореЗрдВ рдЬреЛ рдХреБрдЫ рдерд╛, рдЙрд╕рдХреЗ рдХрд╛рдлреА рдХрд░реАрдм рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣ рдореБрдЭреЗ рдПрдХ рдЧрд╣рд░реЗ рдореБрджреНрджреЗ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐: рдпрджрд┐ рдХреЛрдИ рд░рд┐рдмрд╛рдЗрдВрдб рд╣реЛрддрд╛ рд╣реИ (рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди) рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдкрд░ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ (рдпрд╛ рдЕрдзрд┐рдХ рдЖрдо рддреМрд░ рдкрд░ рдпрджрд┐ рдИрд╡реЗрдВрдЯ рд╕реНрдкреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡реА-рдСрди рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рддреЛ рдореМрдЬреВрджрд╛ рдИрд╡реЗрдВрдЯ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рд╕рд╛рдлрд╝ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╡реЗ рдЕрднреА рднреА (рдЙрдореНрдореАрдж рд╣реИ) рдШрдЯрдХ рдХреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд┐рдкрдЯрд╛рдП рдЬрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рддрдм рдирд╣реАрдВ рдЬрдм рд╡реЗ 'рдЪрд╛рд╣рд┐рдП' рдЬреЛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡реА-рдСрди рд░рд┐рдмрд╛рдЗрдВрдб рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдХрд┐рдирд╛рд░реЗ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдкрд░ рдмрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ:

рдореЗрд░реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЬрдЯрд┐рд▓ рдПрд╕рд╡реАрдЬреА рд╣реИ рдФрд░ рдХреБрдЫ рддрд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдЙрд╕ рдУрд╡рд░/рдЖрдЙрдЯ рд╣реИрдВрдбрд▓рд░ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ)ред
рдШрдЯрдХ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЬреАрд╡рд┐рдд рд░рд╣рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдмрд╛рдЗрдВрдб рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдкрд┐рдЫрд▓реЗ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдирд┐рдкрдЯрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдЕрдирд╛рде рдФрд░ рдЙрджрд╛рд╕ рди рд╣реЛрдВ рдФрд░ рдкреАрдПрдВ рдпрд╛рджред

рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди - рдФрд░ рдореИрдВ рдЬреЛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ - рд╡рд╣ рд╣реИ рдПрдХ 'рд╢реАрд░реНрд╖ рд╕реНрддрд░' рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ (рдкреНрд░рддрд┐ рдИрд╡реЗрдВрдЯ рдкреНрд░рдХрд╛рд░) рд╕реЗрдЯ рдХрд░рдирд╛ рдФрд░ рдИрд╡реЗрдВрдЯ рдХреЛ рдЙрд╕ рдкрд░ рдмреБрд▓рдмреБрд▓рд╛ рдмрдирд╛рдирд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрд╣рд▓реЗ Vue рддрд░реАрдХреЗ рд╕реЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкреНрд░реЗрд░рдгрд╛ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП , рдореЗрд░реЗ рд╣реИрдВрдбрд▓рд░реНрд╕ рдореЗрдВ рдХрд╛рдлреА рдХреБрдЫ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╣реЛрдиреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдкреВрд░реНрд╡-рдЧрдгрдирд╛ рдХрд░рдиреЗ рдФрд░ рдЗрд╡реЗрдВрдЯ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдореЗрдВ рд╣реА рдмреЗрдХ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рддрд╛рдХрд┐ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо (рддреЗрдЬ рдФрд░ рдЕрдзрд┐рдХ рддрд░рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) рд╣реЛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрдирд╡реЙрдЗрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╕рднреА рдЙрди рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдбреАрдУрдПрдо рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдЗрд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдкрд░реАрдд)ред

@VsevolodTrofimov рдкреВрд░реА рдмрд╛рдд рдпрд╣ рдереА рдХрд┐ рдЗрд╡реЗрдВрдЯ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╣реЛрдиреЗ рд╕реЗ

рдЗрд╕реЗ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

<div v-on="{ mouseover: condition ? handler : null }">

рдХреНрдпрд╛ рд╣реИрдВрдбрд▓рд░ рдХреЛ $event рдФрд░ рдЕрдиреНрдп рддрд░реНрдХ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

@pmayer
<div v-on="{ mouseover: condition ? $event => handler($event, arg) : null }">

рдпрд╛ рд╣реИрдВрдбрд▓рд░ рдХрд░реА рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

<div v-on="{ mouseover: condition ? handler(arg) : null }">

рд╕реБрдЭрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде

<div v-on="{ mouseover: condition ? handler : null }">

рдХреНрдпрд╛ ".stop.prevent" рдЬреИрд╕реЗ рд╕рдВрд╢реЛрдзрдХ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдЕрд░реЗ @yyx990803 @VsevolodTrofimov

рдпрд╣рд╛рдВ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди ( v-on="{ mouseover: condition ? handler : null }" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╡реАрдирддрдо Vue рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ:
Invalid handler for event "mouseover": got null

рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Vue рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдИрд╡реЗрдВрдЯ ЁЯдФ рдХреЛ рдЕрдирдмрд╛рдЗрдВрдб рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЖрдЧ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред

@DawidMyslak
рдмрд╕ рдЗрд╕реЗ рдиреАрдЪреЗ рдореЗрдВ рдмрджрд▓реЗрдВ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛

v-on="condition ? { mouseover: handler } : {}"

рдпрд╛, рдпрджрд┐ рдЖрдкрдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ mouseover рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ

v-on="condition ? { mouseover } : {}"

рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ @pbastowski !

рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдпрджрд┐ рдЖрдк рдХрд╕реНрдЯрдо рдбреЗрдЯрд╛ рд╡рд╛рд▓реЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрдирд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдХреБрдЫ рдЗрд╕ рддрд░рд╣

v-on="condition ? { mouseover: () => handler(somedata) } : {}"

рдпрд╣ Vue рдбреЙрдХреНрд╕ . рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

@DawidMyslak
рдмрд╕ рдЗрд╕реЗ рдиреАрдЪреЗ рдореЗрдВ рдмрджрд▓реЗрдВ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛

v-on="condition ? { mouseover: handler } : {}"

рдпрд╛, рдпрджрд┐ рдЖрдкрдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ mouseover рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ

v-on="condition ? { mouseover } : {}"

рдХреНрдпрд╛ рдЗрд╕реЗ .once рд╕рд╛рде рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдЖрдк https://vuejs.org/v2/guide/render-function.html#Event -amp-Key-Modifiers рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

<button v-on="{ '~click': () => foo = new Date() }">Trigger only once</button>

рдЗрд╕ рдкрд░ рдПрдХ рдкреНрд░рд╢реНрди, рдХреНрдпрд╛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдкрд░ рдореЗрдореЛрд░реА рд▓реАрдХ рдпрд╛ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕реНрдерд┐рддрд┐ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓рддреА рд░рд╣рддреА рд╣реИ?

<template>
<div  v-on="myListeners">
some content
</div>
</template>
<script>
...
computed: {
  myListeners() {
    return this.canExecute ? { click: () => this.$emit(...) } : {};
  },
},
...
</script>

рддреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, v-on рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ?

@dietergeerts рдпрд╣ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рджреЗрд╢реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдореИрдВ рдЗрд╕реЗ keydown.native рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред

рдПрдлрд╡рд╛рдИрдЖрдИред рдЪреВрдВрдХрд┐ 2.6 (рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдЖрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдПрдХ рд╕рд╢рд░реНрдд рдШрдЯрдирд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ:

<div @[event]="handler" /> 

рдЬрдмрдХрд┐ event рд╕рдорд╛рдзрд╛рди null , рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

@Justineo рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рдмреАрдЯрд╛ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдпрд╣ рд╕рдВрд╢реЛрдзрдХ (рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕реЗ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдпреЛрдЬрдирд╛рдмрджреНрдз рд╣реИ?

@AlansCodeLog рдЗрд╕реЗ рд╕рднреА рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

@ yyx990803 рдареАрдХ рд╣реИ, рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рд╛ рд╣реИ: #9417

рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП?
<div @mouseover="e => condition && handler(e)" />

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг

<div @mouseover="condition && handler(arguments[0])" />

@ kieryk123 рдХреНрдпрд╛ рдЖрдк рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдбрд╕реИрдВрдбрдмреЙрдХреНрд╕ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдмрдЯрди рддрддреНрд╡ (Vuetify рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдкрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреНрд░реЛрдо рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЖрдЧ рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдФрд░ рддрддреНрд╡ рдХреЛ рдПрдХ div рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдШрдЯрдирд╛ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирдорд╕реНрддреЗред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

// not working
v-on="{ [condition ? 'click.stop' : 'click'] : eventfunc }"
// or
// error
v-on="{ condition ? 'click.stop' : 'click' : eventfunc }"

рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдЙрдкрд╛рдп рд╣реИ?
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣рд╛рдБ рджреЗрд╢реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддрд░рдХреАрдм рд╣реИ (Vue v2.6.11 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ):

@mouseenter.native="condition && handler($event)"

<div @[event]="handler" />

@Justineo рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ Vue рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛?
рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдкрд░ рдирд╣реАрдВ рд▓рд╛ рд╕рдХрддрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдбреЙрдХреНрд╕ рдХреЛ рдПрдХ рд▓рд┐рдВрдХ рднреЗрдЬ рд╕рдХреЗрдВ рдЬрд╣рд╛рдВ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХреВрдВ?

@proArtex рдзрдиреНрдпрд╡рд╛рдж, рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
@keyup.delete="title.length === 0 && cancelTopicCreation()"

рд╕рд╡рд╛рд▓ рд╣реИ.... рдХреНрдпреЛрдВ?

@AndrewBogdanovTSS рдЗрд╕ https://jsfiddle.net/pbastowski/v0wt5qpo/27/

рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдореВрд▓ рдХреНрд▓рд┐рдХ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ .native рдИрд╡реЗрдВрдЯ рдХреЗрд╡рд▓ Vue рдШрдЯрдХреЛрдВ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рд╕рд╛рджреЗ HTML рддрддреНрд╡реЛрдВ рдкрд░ рдирд╣реАрдВред

@pbastowski рд╕рд░рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ, рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЬреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдХреБрдЫ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдШрдЯрдирд╛ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП

<h2 @[() => someProp ? 'mouseup' : null]="alert('Normal click on an HTML element')">H2 Element - click it</h2>

рдФрд░ рдРрд╕рд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

@AndrewBogdanovTSS рдмрд╕ рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЛ рдПрдХ рдЧрдгрдирд╛ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВ, рдпрд╣рд╛рдВ рдЕрджреНрдпрддрди рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ https://jsfiddle.net/pbastowski/v0wt5qpo/63/

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕