- From: Bradley Meck <bradley.meck@gmail.com>
- Date: Wed, 31 Jul 2013 10:28:19 -0500
- To: Domenic Denicola <domenic@domenicdenicola.com>, "www-dom@w3.org" <www-dom@w3.org>
- Message-ID: <CANnEKUY6bOs6zkGvOKR8yLM+cgB8g+7Sae5wdxU3DR-7vXp8iw@mail.gmail.com>
On Wed, Jul 31, 2013 at 10:11 AM, Domenic Denicola < domenic@domenicdenicola.com> wrote: > To make sure I'm understanding the question, here's the situation as I > see it: > > - Object.observe will work for custom elements with hidden state, if their > authors are careful to fire change records on the appropriate properties. > Correct, as long as the user does not need to observe a subtree. If we get a direct reference to the element, this *can* (does not currently) work according to spec. > - Object.observe could work for existing elements, by having them fire > change records. (This is not specced yet, but hopefully will be.) > Correct. > - Mutation observers have no mechanism for working on <input> elements' > checkedness (your original post). > Correct. > - Mutation observers have no mechanism for working on custom elements > (your below post). > They can observe DOM bound changes, but most complex apps such as spreadsheets use .value instead of .setAttribute('value', ...) Does that sum it up? > Yes. > > I agree that this seems like a pretty bad hole in mutation observers and > would love to hear some perspective from others on the list. > > I wonder how Polymer/MDV do "databinding" to e.g. the checked property of > an input; do they just have a list of properties they need to special-case, > and can't bind to attributes directly? > Right now, the only way I have seen is to special case .onChange during tree insertion/removal and mapping the key based on tagName (value, checked, selected). This is kind of hacky... Cheers, Bradley > ------------------------------ > *From:* Bradley Meck [bradley.meck@gmail.com] > *Sent:* Wednesday, July 31, 2013 10:46 > > *To:* www-dom@w3.org > *Subject:* MutationObserver does not observe state changes > > So, it seems that the JS API could fire change records for the host > objects to listen to on Object.observe, but what about something to detect > that this Object.observe is needed if you are listening to a subtree. > > Well then, this still leads to the questions on the DOM side of things; > in particular, what to do with "hidden" state like Shadow DOM like > fragments / WebComponents that may have attribute initializers, but do not > specifically update the Attr itself. How would the author of a WebComponent > tell the DOM to emit a MutationRecord due to a state change representing > what the HTML was initialized with has changed, but the DOM has not updated > the Attr. In the past updating AttributeNodes on the DOM was costly if > performed often enough, very costly on spreadsheet applications for > example. > > > On Sun, Jul 28, 2013 at 3:10 PM, Domenic Denicola < > domenic@domenicdenicola.com> wrote: > >> There is, in theory, nothing that prevents this from working at least >> in the case of Object.observe, given that objects can fire their own >> change records. Indeed, that capability is designed specifically to handle >> the getter/setter case.**** >> >> ** ** >> >> *From:* Bradley Meck [mailto:bradley.meck@gmail.com] >> *Sent:* Sunday, July 28, 2013 10:30 >> *To:* www-dom@w3.org >> *Subject:* MutationObserver does not observe state changes**** >> >> ** ** >> >> Both MutationObservers *and* Object.observe are unable to listen for >> changes to state on <input> elements and the like. This seems like a pretty >> fundamental thing, to have one of these work (if not both). I expect most >> people to encounter some surprise when setting the state of an element but >> not observing them. I have come up with some questions due to this.**** >> >> ** ** >> >> 1. What is the official reason this is not supported?**** >> >> 2. Will there be a change due to this seemingly being a common >> expectation?**** >> >> 3. How should custom elements that have state be treated?**** >> >> 3. 1. Should stateful elements have to write to attributes to be observed? >> **** >> >> 3. 2. Should stateful elements write to host objects directly to be >> observed?**** >> >> ** ** >> >> I have heard the following reasons (for checkboxes) that do not fully >> cover these points:**** >> >> ** ** >> >> .checked etc. is a JS getter on the element. ( >> https://code.google.com/p/chromium/issues/detail?id=260881&can=1&q=mutationobservers&colspec=ID%20Pri%20M%20Iteration%20ReleaseBlock%20Cr%20Status%20Owner%20Summary%20OS%20Modified >> )**** >> >> .checked does not map to an attribute ( https://bugzilla >> .mozilla.org/show_bug.cgi?id=898428 )**** >> >> MutationObservers are not to observe state, only DOM ( >> irc.freenode.net#w3c )**** >> >> ** ** >> >> Thanks,**** >> >> Bradley**** >> > > >
Received on Wednesday, 31 July 2013 15:29:18 UTC