Re: [w3c/webcomponents] Better custom event support for custom elements would be great (#546)

Or did I misunderstand what you meant?

On Sep 17, 2016 4:44 PM, "/#!/JoePea" <joe@trusktr.io> wrote:

> > Since attributes are notified as soon as the element is upgraded,
>
> Not true, if attributes exist on the element before they are upgraded,
> Chrome doesn't call your attributChangedCallback (I guess technically, the
> attribute didn't change after the instance was made).
>
> On Sep 16, 2016 4:09 AM, "Andrea Giammarchi" <notifications@github.com>
> wrote:
>
>> @chris-morgan <https://github.com/chris-morgan> you could have a simple
>> convention like:
>>
>> class MyImage extends HTMLElement {
>>
>>   static get observedAttributes() {
>>     return ['onerror', 'onload'];
>>   }
>>
>>   attributeChangedCallback(name, oldValue, newValue) {
>>     if (/^on/.test(name)) {
>>       if (newValue) {
>>         this[name] = newValue;
>>         this.addEventListener(name.slice(2), this);
>>       } else {
>>         delete this[name];
>>         this.removeEventListener(name.slice(2), this);
>>       }
>>     } else {
>>       // every other attribute logic
>>     }
>>   }
>>
>>   // any event previously registered through the instance
>>   // will pass through this listener
>>   handleEvent(e) {
>>     return this['on' + e.type](e);
>>   }
>>
>> }
>>
>> Since attributes are notified as soon as the element is upgraded, you'll
>> have your events and, whenever such attribute will be removed, or changed,
>> you'll have them reflected.
>>
>> The good part of using the instance as listener is that you'll never end
>> up with double listeners or never removed one (like unhanded bound events
>> would be) so it's quite easy to circumvent the current limit when it comes
>> to custom attributes, keeping the on prefix like the de-fact standard to
>> define an event.
>>
>> —
>> You are receiving this because you commented.
>> Reply to this email directly, view it on GitHub
>> <https://github.com/w3c/webcomponents/issues/546#issuecomment-247059876>,
>> or mute the thread
>> <https://github.com/notifications/unsubscribe-auth/AASKzlnIMXZbTc8RGvWWXWb26eBj5T6Oks5qqBgmgaJpZM4Jjlhf>
>> .
>>
>


-- 
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/546#issuecomment-247814921

Received on Saturday, 17 September 2016 23:45:49 UTC