flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erik de Bruin <e...@ixsoftware.nl>
Subject Re: TextInput JS events
Date Thu, 06 Mar 2014 12:41:46 GMT
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 <erik@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.rovira@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 <erik@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 <carlosrovira@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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message