WoodyLabBuild with UIMS

Guida · Il comportamento

Un evento con un indirizzo

Lo stesso evento, tre accordion in pagina. Senza indirizzo si aprono tutti e tre — ed è quasi sempre l’ultima cosa che vuoi.

Dove siamo

Sai emettere e sai dichiarare. Alla fine di questo capitolo un evento colpirà un nodo solo, e saprai cosa succede a chi non è stato nominato.

Il gesto

Metti tre blocchi uguali che reagiscono allo stesso evento.

Nel uiState.effects di ognuno imposta scope su self.

Emetti l’evento con l’indirizzo del nodo che vuoi colpire. Ricarica: reagisce solo quello.

// il uiState di un blocco, in Payload
{
  "uiState": {
    "effects": [
      { "trigger": "on:event", "eventName": "ui:toggle", "scope": "self" }
    ]
  }
}

Cos’è appena successo

Senza scope, un nodo ascolta gli eventi generici: quelli che non hanno destinatario. Con scope: self ascolta anche quelli indirizzati a sé — e continua a ignorare quelli indirizzati a qualcun altro.

La conseguenza è che lo stesso vocabolario funziona sia per il comando globale sia per quello puntuale, senza due nomi diversi. ui:toggle senza indirizzo vuol dire «tutti quelli che stanno ascoltando»; con l’indirizzo vuol dire «quello lì».

È la ragione per cui un bottone in fondo alla pagina può aprire l’accordion in cima senza che i due si conoscano: non si passano un riferimento, si passano un nome.

Questi indirizzi sono tutti ASSOLUTI: chi li scrive deve sapere l’id dell’altro. Ne esiste un quarto, owner, che invece risale l’albero — serve quando l’altro nodo è il proprio contenitore, e ha un capitolo suo.

Chi ascolta dichiara di volerlo

{ trigger: 'on:event', eventName: 'ui:toggle', scope: 'self' }

La chiave che ne esce

scopeKey('self',   'open',  nodeId)   // 'nodo-42:open'
scopeKey('#hero',  'open',  nodeId)   // 'hero:open'
scopeKey('owner',  'index', nodeId)   // il contenitore, trovato invece che nominato
// senza scope: 'open' — quella condivisa da tutti

Quando non funziona

Indirizza un evento a un nodo che non esiste. Non reagisce nessuno, e non c’è nessun avviso: l’indirizzo non viene verificato, viene confrontato.

Lo stesso vale al contrario: se dimentichi scope: self, il nodo continua a rispondere agli eventi generici e sembra funzionare — finché non provi a colpirne uno solo.

Avanti

Manca il lato opposto: non cosa succede quando un evento arriva, ma cosa lo fa partire.

Un evento con un indirizzo · WoodyLab