Sto costruendo una classe Selection
che contiene e consente di manipolare Items
selezionato su un'area di lavoro.
-
Il
Selection
fa parte diDocument
, il contenitore di app di primo livello, se lo desideri. -
Mi piacerebbe essere in grado di cancellare la selezione dalla classe
Selection
. -
Il problema è che la creazione / eliminazione della selezione viene eseguita su
Document
.
È un odore di codice iniettare il genitore Document
nel child Selection
così posso richiamare i suoi metodi da Selection
?
Se sì, perché e quali sono le alternative a questo?
class Document {
constructor() {
this.currentSelection = null
}
createSelection(items) {
// here I'm creating a Selection and injecting
// this 'Document' within it.
this.currentSelection = new Selection(items, this)
}
clearSelection() {
this.currentSelection = null
}
}
class Selection extends HTMLElement {
// this class also renders the flyout buttons that follow around
// the selection on the canvas. The buttons can call methods on
// this class.
constructor(items, document) {
this.items = items
this.document = document
}
updateFillColor(fillColor) {
// updates all this.items fill color, just a placeholder for now
}
clear() {
this.document.clearSelection()
}
}
Nota : quanto sopra è solo un esempio. Il mio problema reale è significativamente più complicato (implica chiamare più metodi sul genitore), ma è concettualmente lo stesso.