As a first try, I'd suggest you rename the "event" package to something less collision prone, like "events"...
EdB On Thu, Mar 6, 2014 at 1:29 PM, Erik de Bruin <e...@ixsoftware.nl> wrote: > Carlos, > > I'm currently looking at the example application. You use 'event' as part > of the namespace. In FlexJS JS, all objects are fully qualified, so where > in AS you would have "new TodoListEvent(TodoListEvent.LOG_TODO)", in JS > that will become "new event.TodoListEvent(event.TodoListEvent.LOG_TODO)". > Now this becomes a problem, as "event" is not only in your namespace, you > use it as a function parameter name and (at least in IE) it is a global > variable. So, some of the problems you have with the app probably come from > the browser not knowing which "event" object reference to resolve a > variable to, choosing the wrong one: voila! exception :-( > > I'll continue looking to see if I can find a fix that is not too intense. > > EdB > > > > > On Thu, Mar 6, 2014 at 12:35 PM, Carlos Rovira < > carlos.rov...@codeoscopic.com> wrote: > >> Hi Erik, >> >> thanks, I have a version locally without the need of InputHandler goog >> class to remove that dependency, but although I'm with you that this >> solution should be the right from a design perspective it's not working >> for >> me. The method is getting called due to MXMLDataInterpreter setup >> internals >> (so it seems to be out of the control and scope of developer) and not due >> to the CHANGE event that TextInput.js propagates (if I remove this >> listener/event the change *native* event is operating and is what I think >> we should remove in some way, maybe patching the MXMLDataInterpreter to >> avoid making a listener of text input to change event). >> >> Maybe with your changes now you get it working (could you confirm)? that >> would be great since after thinking in my proposal and Alex comments I >> would prefer to maintain Flex API as possible and not going to map JS >> 'input' event. FlexJS users would expect CHANGE to work as they do in >> traditional Flex. >> >> I'm this morning out, but I'd like to get it back to this issue this >> night. >> >> Thanks Erik for take the time to see this since you're more experienced >> with all this JS stuff and it's good to have your validation. >> >> Best, >> >> Carlos >> >> >> >> >> >> 2014-03-06 9:29 GMT+01:00 Erik de Bruin <e...@ixsoftware.nl>: >> >> > Carlos, >> > >> > In your JS implementation I see you already set up a handler that >> catches >> > "input" events and re-casts them as "change" events. This seems like a >> > perfectly acceptable solution to this issue and much more clean and >> > intuitive than trying to get the AS side to emit "input" instead of >> change, >> > and have your users work with that 'unfamiliar' event. >> > >> > I've changed the visibility of the 'inputChangeHandler' to private, as >> this >> > method shouldn't be overridden, and added a call to 'stopPropagation' >> for >> > the original event (as Alex suggested), so it doesn't interfere or >> confuse >> > things later in the chain. >> > >> > Nice work! >> > >> > EdB >> > >> > >> > >> > >> > On Wed, Mar 5, 2014 at 6:19 PM, Carlos Rovira <carlosrov...@apache.org >> > >wrote: >> > >> > > Hi, >> > > >> > > I'm trying to deal with events in JS and I'm finding some troubles. >> Maybe >> > > you guys more experienced with google closure could help me to find >> the >> > > way. >> > > >> > > In old Flex SDK, TextInput change event is used to signal changes in >> text >> > > as user introduces. In JS input text that event is 'input', while >> > 'change' >> > > is called when the text is different and the user press ENTER key or >> > > changes focus. >> > > >> > > If we make the following declaration in a MXML View: >> > > >> > > <basic:TextInput id="myTextInput" >> > > width="300" >> > > change="doSomething()"/> >> > > >> > > This generate the following JS code in get_MXMLDescriptor: >> > > >> > > ... >> > > [org.apache.flex.html.staticControls.TextInput, 2, 'id', true, >> > > 'myTextInput', 'width', true, 300, 0, 1, 'change', this.$EH0, null, >> > > ... >> > > >> > > This makes the TextInput work as expected in SWF (doSomething runs on >> > each >> > > character introduced on TextInput) >> > > >> > > But In JS, without implement anything yet in TextInput.js about input >> > text >> > > handling events, the generated code makes doSomething method runs when >> > user >> > > press ENTER or focus out if text was changed. I tried to implement >> CHANGE >> > > event with no luck due to the listener generated behind the scenes >> that >> > > match the same name as native textinput change event. >> > > >> > > Note that If I rename 'change' to 'input' in all places, including >> > > TextInput.as metadata event declaration it works ok, since event match >> > the >> > > input js event. It looks like this: >> > > >> > > <basic:TextInput id="myTextInput" >> > > width="300" >> > > input="doSomething()"/> >> > > >> > > What could we do here? Should we patch MXMLDataInterpreter class to >> deal >> > > with this particularities (maybe translate 'change' to 'input' behind >> the >> > > scenes to maintain 'change in AS side)? change from traditional Flex >> > events >> > > to something more JS (so using 'input' instead of 'change'? >> > > >> > > If you find this kind of problems before, maybe you already has some >> > > strategy or framework design rule to follow. >> > > >> > > Thanks >> > > >> > > Carlos >> > > >> > > >> > > -- >> > > Carlos Rovira >> > > http://about.me/carlosrovira >> > > >> > >> > >> > >> > -- >> > Ix Multimedia Software >> > >> > Jan Luykenstraat 27 >> > 3521 VB Utrecht >> > >> > T. 06-51952295 >> > I. www.ixsoftware.nl >> > >> >> >> >> -- >> Carlos Rovira >> Director de TecnologĂa >> M: +34 607 22 60 05 >> F: +34 912 94 80 80 >> http://www.codeoscopic.com >> http://www.directwriter.es >> http://www.avant2.es >> > > > > -- > Ix Multimedia Software > > Jan Luykenstraat 27 > 3521 VB Utrecht > > T. 06-51952295 > I. www.ixsoftware.nl > -- Ix Multimedia Software Jan Luykenstraat 27 3521 VB Utrecht T. 06-51952295 I. www.ixsoftware.nl