W3C home > Mailing lists > Public > public-webapps@w3.org > April to June 2014

Re: Custom Elements: 'data-' attributes

From: Soledad Penadés <sole@mozilla.com>
Date: Wed, 14 May 2014 12:18:42 +0100
Message-ID: <53735112.9090303@mozilla.com>
To: "public-webapps@w3c.org" <public-webapps@w3c.org>
On 13/05/2014 10:37, Anne van Kesteren wrote:
> Sole had the idea of providing hooks for attributes so a component can 
> say it handles them rather than the user agent. That makes a lot of 
> sense to me. That way you can grab any name, even existing ones. 
Thank you for adding this idea to the list, Anne!
Now that you've involved me I have to emerge from the Lurkers in the 
Shadow tree and add in the rest of my comments:

As a developer which likes the idea of web components because they will 
allow me to write "semantic code" I am concerned about prefixing the 
attributes of *my* components with data-. It not only is unneeded noise 
but it also clashes with the understanding I had of how web components 
should work. If they are custom, they *are* custom--I should have total 
ownership over them.

Hypothetical comparison:

<audio-synth osc1="square" osc2="sine" frequency="320"></audio-synth>

where I can grab a reference and access this in JS with

synth.osc1 = ...
synth.frequency = ...

vs

<audio-synth data-osc1="square" data-osc2="sine" 
data-frequency="320"></audio-synth>

synth.dataset['osc1'] = ...
synth.dataset['frequency'] = ...

Plus this second method looks like it wouldn't allow me to use custom 
setters/getters. Specially setters! When you're building components you 
want to do fancy things when you modify attributes, for example update 
the position of a knob with a smooth transition, and not just update the 
attribute value.

I'm grateful to James Graham and Anne V.K. for explaining me the 
reasoning behind this prefixing idea: so that both current and FUTURE 
global attributes do not clash with the attributes I choose to use in my 
component.

And that's where I suggested leaving attribute handling to the 
component. If it "self-registers" as handling a certain attribute, then 
don't let the UA handle it as it would do if unregistered.

Hope that makes sense! :-)

sole

-- 
//
// http://soledadpenades.com   //  @supersole //
// GIF HACKTIVIST // Mozilla Apps Engineering //
                                               //
Received on Wednesday, 14 May 2014 13:25:18 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 18:14:24 UTC