103 / 112
ΠΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ Mediator Π΄Π»Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²?
Mediator -- ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΎΠ±ΡΠ°ΡΡΡΡ, Π½Π΅ Π·Π½Π°Ρ Π΄ΡΡΠ³ ΠΎ Π΄ΡΡΠ³Π΅. Π Vue ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ provide/inject composable, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΡΡ ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΡΡΡΡΡ.
JavaScript
// ΠΠ΅Π΄ΠΈΠ°ΡΠΎΡ ΡΠΎΡΠΌΡ -- ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»Ρ
const formMediator = {
fields: new Map(),
register(name, field) { this.fields.set(name, field) },
validateAll() {
return [...this.fields.values()].every(f => f.validate())
},
getValues() {
return Object.fromEntries([...this.fields].map(([k, v]) => [k, v.value]))
}
}