-
- Notifications
You must be signed in to change notification settings - Fork 4
Attribute binding
Rafał Lorenz edited this page May 17, 2017 · 3 revisions
We can easy bind attributes for our custom element. By providing array of attr names in a static function observedAttributes. By defining attr name for example who
import { WebComponent } from 'web-component' @WebComponent('hello-world', { template: require('./hello-world.html') }) export class HelloWorld extends HTMLElement { static get observedAttributes() { return ['who']; } }Docorator will handle for us:
- What happens is that decorator adds a class property which you can access
this._whofor example to set a default value in a controller
import { WebComponent } from 'web-component' @WebComponent('hello-world', { template: require('./hello-world.html') }) export class HelloWorld extends HTMLElement { constructor() { super(); this._who = null; } }- Next thing is it watches
attributeChangedCallbackand whenever attributewhois changed it updatesthis._whoproperty.
<hello-world who="Unicorn"></hello-world>-
It watches
connectedCallbackand if our custom element has attributewhoit updatesthis._whoproperty -
It adds getter and setter methods, this way we can access, and change attr value with ajvascript.
const helloWorldComponent = document.findElementById('example'); helloWorldComponent.who; //display value of this._who helloWorldComponent.who = 'Unicorn'; //sets attr and this._who property value to Unicorn