- From: Joseph Orbegoso Pea <notifications@github.com>
- Date: Fri, 01 Jul 2016 19:17:54 -0700
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Cc:
- Message-ID: <w3c/webcomponents/issues/527/230078599@github.com>
Another possibility could be to add a `distributed` or `assigned` event that we can listen to on the element, so in createdCallback:
```js
customeElements.define('motor-scene',
class extends HTMLElement {
constructor() {
this.addEventListener('assigned', e => this.doSomething())
}
doSomething() {}
}
)
```
but, in that case we might as well move the `connected` and `disconnected` methods to the event space too:
```js
customElements.define('motor-scene',
class extends HTMLElement {
createdCallback() {
this.addEventListener('connected', e => this.doSomethingElse())
this.addEventListener('disconnected', e => this.cleanUp())
this.addEventListener('assigned', e => this.doSomething())
}
doSomething() {...}
doSomethingElse() {...}
cleanUp() {...}
}
)
```
I think just allowing a method to be defined is the simplest way for class-definition time ergonomics:
```js
class MotorScene extends HTMLElement {
constructor() {...}
connectedCallback() {...}
disconnectedCallback() {...}
assignedCallback() {...}
}
customElements.define('motor-scene', MotorScene)
```
But including the `connected`, `disconnected` (and possibly something like `assigned`) would make the API for retrieving an existing elements and adding behavior to them more clean, otherwise with the class-based methods alone we are limited to monkey patching in the scenarios when we want to modify already-instantiated elements. With events:
```js
document.querySelector('#some-el').addEventListener('assigned', e => {...})
```
---
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/webcomponents/issues/527#issuecomment-230078599
Received on Saturday, 2 July 2016 02:18:31 UTC