Binding question/issue

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Binding question/issue

tranquiliste
Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}
Nicolas
Reply | Threaded
Open this post in threaded view
|

Re: Binding question/issue

Alex Harui-2

Hi Nicolas,

 

Looks like you are using the Jewel component set, so you may need to add ContainerDataBinding to the screens.  Different MXML files can have different binding implementation for performance reasons and there may not be one specified by default for PAYG reasons.

 

You can do that by adding the ContainerDataBinding bead to the MXML files for screens where you have binding expressions in the same way you added ApplicationDataBinding to the main app, or if Ecran1Class is only used as the top tag in an MXML file, then it should be safe to just add the ContainerDataBinding bead in the Ecran1Class constructor.

 

public function Ecran1Class()
{
super();

addBead(new ContainerDataBinding());
}
}

 

HTH,

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Saturday, May 16, 2020 at 10:31 PM
To: "[hidden email]" <[hidden email]>
Subject: Binding question/issue

 

Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}

Reply | Threaded
Open this post in threaded view
|

Re: Binding question/issue

Carlos Rovira-2
Hi Nicolas and welcome,

here's a blog post about data binding that can help you with it:


At the end it links to the Royale Data Binding Docs page too.

You can check as well TDJ source code where data binding is used heavily


thanks

Carlos




El dom., 17 may. 2020 a las 8:19, Alex Harui (<[hidden email]>) escribió:

Hi Nicolas,

 

Looks like you are using the Jewel component set, so you may need to add ContainerDataBinding to the screens.  Different MXML files can have different binding implementation for performance reasons and there may not be one specified by default for PAYG reasons.

 

You can do that by adding the ContainerDataBinding bead to the MXML files for screens where you have binding expressions in the same way you added ApplicationDataBinding to the main app, or if Ecran1Class is only used as the top tag in an MXML file, then it should be safe to just add the ContainerDataBinding bead in the Ecran1Class constructor.

 

public function Ecran1Class()
{
super();

addBead(new ContainerDataBinding());
}
}

 

HTH,

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Saturday, May 16, 2020 at 10:31 PM
To: "[hidden email]" <[hidden email]>
Subject: Binding question/issue

 

Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}



--
Reply | Threaded
Open this post in threaded view
|

Re: Binding question/issue

tranquiliste
In reply to this post by Alex Harui-2
Hello Alex,

Thanks for your reply, I tried what you suggested and added addBead(new
ContainerDataBinding()) to the constructor, I also tried to add to the
Ecran1.mxml the
<j:beads>
<js:ContainerDataBinding/>
</j:beads>

And read the different example provided Carlos and tried to mimic them,but I still get an undefined
value when I execute the application.

Le dim. 17 mai 2020 à 08:19, Alex Harui <[hidden email]> a écrit :

Hi Nicolas,

 

Looks like you are using the Jewel component set, so you may need to add ContainerDataBinding to the screens.  Different MXML files can have different binding implementation for performance reasons and there may not be one specified by default for PAYG reasons.

 

You can do that by adding the ContainerDataBinding bead to the MXML files for screens where you have binding expressions in the same way you added ApplicationDataBinding to the main app, or if Ecran1Class is only used as the top tag in an MXML file, then it should be safe to just add the ContainerDataBinding bead in the Ecran1Class constructor.

 

public function Ecran1Class()
{
super();

addBead(new ContainerDataBinding());
}
}

 

HTH,

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Saturday, May 16, 2020 at 10:31 PM
To: "[hidden email]" <[hidden email]>
Subject: Binding question/issue

 

Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}

Nicolas
Reply | Threaded
Open this post in threaded view
|

Re: Binding question/issue

Alex Harui-2

What value is undefined?  Is there a call stack or error message?

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:09 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

Thanks for your reply, I tried what you suggested and added addBead(new
ContainerDataBinding()) to the constructor, I also tried to add to the
Ecran1.mxml the
<j:beads>
<js:ContainerDataBinding/>
</j:beads>

And read the different example provided Carlos and tried to mimic them,but I still get an undefined
value when I execute the application.

 

Le dim. 17 mai 2020 à 08:19, Alex Harui <[hidden email]> a écrit :

Hi Nicolas,

 

Looks like you are using the Jewel component set, so you may need to add ContainerDataBinding to the screens.  Different MXML files can have different binding implementation for performance reasons and there may not be one specified by default for PAYG reasons.

 

You can do that by adding the ContainerDataBinding bead to the MXML files for screens where you have binding expressions in the same way you added ApplicationDataBinding to the main app, or if Ecran1Class is only used as the top tag in an MXML file, then it should be safe to just add the ContainerDataBinding bead in the Ecran1Class constructor.

 

public function Ecran1Class()
{
super();

addBead(new ContainerDataBinding());
}
}

 

HTH,

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Saturday, May 16, 2020 at 10:31 PM
To: "[hidden email]" <[hidden email]>
Subject: Binding question/issue

 

Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}

Reply | Threaded
Open this post in threaded view
|

Re: Binding question/issue

tranquiliste
Hello Alex,

this is the {MAX_CHARS_NOM} in my TextInput which is undefined and yes there is an error


TypeError: this.dispatcher is undefinedSimpleBinding.js:228:3
    set__strand file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/SimpleBinding.js:228
    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:120
    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/HTMLElementWrapper.js:50
    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:378
    prepareCreatedBinding file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/DataBindingBase.js:79
    initBindingsHandler file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/ViewDataBinding.js:82
    <anonyme> self-hosted:844
    fireListeners file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:117
    dispatchEventInternal_ file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/library/closure/goog/events/eventtarget.js:382
    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:80
    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:243
    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:70
    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405
    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165
    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241
    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127
    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271
    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69
    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405
    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165
    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241
    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127
    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271
    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69
    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:144
    initialize file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:295
    start file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:264
    <anonyme> file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/TestBinding.html:155

Le lun. 18 mai 2020 à 07:17, Alex Harui <[hidden email]> a écrit :

What value is undefined?  Is there a call stack or error message?

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:09 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

Thanks for your reply, I tried what you suggested and added addBead(new
ContainerDataBinding()) to the constructor, I also tried to add to the
Ecran1.mxml the
<j:beads>
<js:ContainerDataBinding/>
</j:beads>

And read the different example provided Carlos and tried to mimic them,but I still get an undefined
value when I execute the application.

 

Le dim. 17 mai 2020 à 08:19, Alex Harui <[hidden email]> a écrit :

Hi Nicolas,

 

Looks like you are using the Jewel component set, so you may need to add ContainerDataBinding to the screens.  Different MXML files can have different binding implementation for performance reasons and there may not be one specified by default for PAYG reasons.

 

You can do that by adding the ContainerDataBinding bead to the MXML files for screens where you have binding expressions in the same way you added ApplicationDataBinding to the main app, or if Ecran1Class is only used as the top tag in an MXML file, then it should be safe to just add the ContainerDataBinding bead in the Ecran1Class constructor.

 

public function Ecran1Class()
{
super();

addBead(new ContainerDataBinding());
}
}

 

HTH,

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Saturday, May 16, 2020 at 10:31 PM
To: "[hidden email]" <[hidden email]>
Subject: Binding question/issue

 

Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}

Nicolas
Reply | Threaded
Open this post in threaded view
|

Re: Binding question/issue

Alex Harui-2

Interesting.  I wonder if [hidden email] has time to look at this.  He’s been through more of these scenarios than I have.

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:24 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

 

this is the {MAX_CHARS_NOM} in my TextInput which is undefined and yes there is an error

 

 

TypeError: this.dispatcher is undefinedSimpleBinding.js:228:3

    set__strand file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/SimpleBinding.js:228

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:120

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/HTMLElementWrapper.js:50

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:378

    prepareCreatedBinding file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/DataBindingBase.js:79

    initBindingsHandler file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/ViewDataBinding.js:82

    <anonyme> self-hosted:844

    fireListeners file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:117

    dispatchEventInternal_ file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/library/closure/goog/events/eventtarget.js:382

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:80

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:243

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:70

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:144

    initialize file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:295

    start file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:264

    <anonyme> file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/TestBinding.html:155

 

Le lun. 18 mai 2020 à 07:17, Alex Harui <[hidden email]> a écrit :

What value is undefined?  Is there a call stack or error message?

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:09 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

Thanks for your reply, I tried what you suggested and added addBead(new
ContainerDataBinding()) to the constructor, I also tried to add to the
Ecran1.mxml the
<j:beads>
<js:ContainerDataBinding/>
</j:beads>

And read the different example provided Carlos and tried to mimic them,but I still get an undefined
value when I execute the application.

 

Le dim. 17 mai 2020 à 08:19, Alex Harui <[hidden email]> a écrit :

Hi Nicolas,

 

Looks like you are using the Jewel component set, so you may need to add ContainerDataBinding to the screens.  Different MXML files can have different binding implementation for performance reasons and there may not be one specified by default for PAYG reasons.

 

You can do that by adding the ContainerDataBinding bead to the MXML files for screens where you have binding expressions in the same way you added ApplicationDataBinding to the main app, or if Ecran1Class is only used as the top tag in an MXML file, then it should be safe to just add the ContainerDataBinding bead in the Ecran1Class constructor.

 

public function Ecran1Class()
{
super();

addBead(new ContainerDataBinding());
}
}

 

HTH,

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Saturday, May 16, 2020 at 10:31 PM
To: "[hidden email]" <[hidden email]>
Subject: Binding question/issue

 

Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}

Reply | Threaded
Open this post in threaded view
|

Re: Binding question/issue

tranquiliste
Hello in my different tries I put [Bindable] in front of my constant
[Bindable] public static const MAX_CHARS_NOM:int = 50;
And the error stack disappears when I remove the [Bindable] but it doesn't solve my issue as the <j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" /> still shows an undefined value

Nicolas

Le lun. 18 mai 2020 à 07:32, Alex Harui <[hidden email]> a écrit :

Interesting.  I wonder if [hidden email] has time to look at this.  He’s been through more of these scenarios than I have.

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:24 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

 

this is the {MAX_CHARS_NOM} in my TextInput which is undefined and yes there is an error

 

 

TypeError: this.dispatcher is undefinedSimpleBinding.js:228:3

    set__strand file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/SimpleBinding.js:228

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:120

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/HTMLElementWrapper.js:50

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:378

    prepareCreatedBinding file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/DataBindingBase.js:79

    initBindingsHandler file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/ViewDataBinding.js:82

    <anonyme> self-hosted:844

    fireListeners file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:117

    dispatchEventInternal_ file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/library/closure/goog/events/eventtarget.js:382

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:80

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:243

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:70

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:144

    initialize file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:295

    start file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:264

    <anonyme> file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/TestBinding.html:155

 

Le lun. 18 mai 2020 à 07:17, Alex Harui <[hidden email]> a écrit :

What value is undefined?  Is there a call stack or error message?

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:09 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

Thanks for your reply, I tried what you suggested and added addBead(new
ContainerDataBinding()) to the constructor, I also tried to add to the
Ecran1.mxml the
<j:beads>
<js:ContainerDataBinding/>
</j:beads>

And read the different example provided Carlos and tried to mimic them,but I still get an undefined
value when I execute the application.

 

Le dim. 17 mai 2020 à 08:19, Alex Harui <[hidden email]> a écrit :

Hi Nicolas,

 

Looks like you are using the Jewel component set, so you may need to add ContainerDataBinding to the screens.  Different MXML files can have different binding implementation for performance reasons and there may not be one specified by default for PAYG reasons.

 

You can do that by adding the ContainerDataBinding bead to the MXML files for screens where you have binding expressions in the same way you added ApplicationDataBinding to the main app, or if Ecran1Class is only used as the top tag in an MXML file, then it should be safe to just add the ContainerDataBinding bead in the Ecran1Class constructor.

 

public function Ecran1Class()
{
super();

addBead(new ContainerDataBinding());
}
}

 

HTH,

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Saturday, May 16, 2020 at 10:31 PM
To: "[hidden email]" <[hidden email]>
Subject: Binding question/issue

 

Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}

Nicolas
Reply | Threaded
Open this post in threaded view
|

Re: Binding question/issue

Alex Harui-2

Unfortunately, we could just have a bug in the Binding code.  My first thought when looking at the stack dump was “I wonder if we tested binding to a static const in a base class?”.  I’m hoping that folks who’ve spent more time debugging the binding code will step in and follow up with you.

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:49 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello in my different tries I put [Bindable] in front of my constant

 

[Bindable]

public

static

const MAX_CHARS_NOM:int =

50;

 

 

And the error stack disappears when I remove the [Bindable] but it doesn't solve my issue as the <j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" /> still shows an undefined value

 

Nicolas

 

Le lun. 18 mai 2020 à 07:32, Alex Harui <[hidden email]> a écrit :

Interesting.  I wonder if [hidden email] has time to look at this.  He’s been through more of these scenarios than I have.

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:24 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

 

this is the {MAX_CHARS_NOM} in my TextInput which is undefined and yes there is an error

 

 

TypeError: this.dispatcher is undefinedSimpleBinding.js:228:3

    set__strand file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/SimpleBinding.js:228

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:120

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/HTMLElementWrapper.js:50

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:378

    prepareCreatedBinding file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/DataBindingBase.js:79

    initBindingsHandler file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/ViewDataBinding.js:82

    <anonyme> self-hosted:844

    fireListeners file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:117

    dispatchEventInternal_ file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/library/closure/goog/events/eventtarget.js:382

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:80

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:243

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:70

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:144

    initialize file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:295

    start file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:264

    <anonyme> file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/TestBinding.html:155

 

Le lun. 18 mai 2020 à 07:17, Alex Harui <[hidden email]> a écrit :

What value is undefined?  Is there a call stack or error message?

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:09 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

Thanks for your reply, I tried what you suggested and added addBead(new
ContainerDataBinding()) to the constructor, I also tried to add to the
Ecran1.mxml the
<j:beads>
<js:ContainerDataBinding/>
</j:beads>

And read the different example provided Carlos and tried to mimic them,but I still get an undefined
value when I execute the application.

 

Le dim. 17 mai 2020 à 08:19, Alex Harui <[hidden email]> a écrit :

Hi Nicolas,

 

Looks like you are using the Jewel component set, so you may need to add ContainerDataBinding to the screens.  Different MXML files can have different binding implementation for performance reasons and there may not be one specified by default for PAYG reasons.

 

You can do that by adding the ContainerDataBinding bead to the MXML files for screens where you have binding expressions in the same way you added ApplicationDataBinding to the main app, or if Ecran1Class is only used as the top tag in an MXML file, then it should be safe to just add the ContainerDataBinding bead in the Ecran1Class constructor.

 

public function Ecran1Class()
{
super();

addBead(new ContainerDataBinding());
}
}

 

HTH,

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Saturday, May 16, 2020 at 10:31 PM
To: "[hidden email]" <[hidden email]>
Subject: Binding question/issue

 

Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}

Reply | Threaded
Open this post in threaded view
|

Re: Binding question/issue

Greg Dove

I will try to look at this in the next few hours.


On Mon, May 18, 2020 at 6:18 PM Alex Harui <[hidden email]> wrote:

Unfortunately, we could just have a bug in the Binding code.  My first thought when looking at the stack dump was “I wonder if we tested binding to a static const in a base class?”.  I’m hoping that folks who’ve spent more time debugging the binding code will step in and follow up with you.

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:49 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello in my different tries I put [Bindable] in front of my constant

 

[Bindable]

public

static

const MAX_CHARS_NOM:int =

50;

 

 

And the error stack disappears when I remove the [Bindable] but it doesn't solve my issue as the <j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" /> still shows an undefined value

 

Nicolas

 

Le lun. 18 mai 2020 à 07:32, Alex Harui <[hidden email]> a écrit :

Interesting.  I wonder if [hidden email] has time to look at this.  He’s been through more of these scenarios than I have.

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:24 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

 

this is the {MAX_CHARS_NOM} in my TextInput which is undefined and yes there is an error

 

 

TypeError: this.dispatcher is undefinedSimpleBinding.js:228:3

    set__strand file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/SimpleBinding.js:228

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:120

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/HTMLElementWrapper.js:50

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:378

    prepareCreatedBinding file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/DataBindingBase.js:79

    initBindingsHandler file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/ViewDataBinding.js:82

    <anonyme> self-hosted:844

    fireListeners file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:117

    dispatchEventInternal_ file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/library/closure/goog/events/eventtarget.js:382

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:80

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:243

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:70

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:144

    initialize file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:295

    start file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:264

    <anonyme> file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/TestBinding.html:155

 

Le lun. 18 mai 2020 à 07:17, Alex Harui <[hidden email]> a écrit :

What value is undefined?  Is there a call stack or error message?

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:09 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

Thanks for your reply, I tried what you suggested and added addBead(new
ContainerDataBinding()) to the constructor, I also tried to add to the
Ecran1.mxml the
<j:beads>
<js:ContainerDataBinding/>
</j:beads>

And read the different example provided Carlos and tried to mimic them,but I still get an undefined
value when I execute the application.

 

Le dim. 17 mai 2020 à 08:19, Alex Harui <[hidden email]> a écrit :

Hi Nicolas,

 

Looks like you are using the Jewel component set, so you may need to add ContainerDataBinding to the screens.  Different MXML files can have different binding implementation for performance reasons and there may not be one specified by default for PAYG reasons.

 

You can do that by adding the ContainerDataBinding bead to the MXML files for screens where you have binding expressions in the same way you added ApplicationDataBinding to the main app, or if Ecran1Class is only used as the top tag in an MXML file, then it should be safe to just add the ContainerDataBinding bead in the Ecran1Class constructor.

 

public function Ecran1Class()
{
super();

addBead(new ContainerDataBinding());
}
}

 

HTH,

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Saturday, May 16, 2020 at 10:31 PM
To: "[hidden email]" <[hidden email]>
Subject: Binding question/issue

 

Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}

Reply | Threaded
Open this post in threaded view
|

Re: Binding question/issue

Greg Dove

There's a few things to take note of here.

1. If you are binding to a static constant in another class, you need to reference it via the other class (even if it is in ancestry). This is the same as actionscript. That means importing the class inside a script block. You don't need to use member access on the class if it is the current class (the mxml document class).

2. The MaxNumberCharacters bead was not set up to be a binding target (it was not propagating changes after startup values). I updated that, so it should be usable in the way you want when you either rebuild, or download the next nightly build (whichever you are doing).

3. For custom classes, you need to make sure you use the correct namespace for the class level properties. This should be the same namespace as the class itself.

so for <ecran:Ecran1Class>

you would use
<ecran:beads> ...ContainerDataBinding bead here ...</ecran:beads>


Here's how I tested:

<ecrans:Ecran1Class xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:j="library://ns.apache.org/royale/jewel"
    xmlns:js="library://ns.apache.org/royale/basic"
    xmlns:ecrans="ecrans.*">

    <fx:Script>
        import ecrans.Ecran1Class;

        //alternative... see below
        public static const LOCAL_MAX_CHARS_NOM:int = 25;
    </fx:Script>

    <ecrans:beads>
        <js:ContainerDataBinding/>
    </ecrans:beads>

    <j:Form width="100%" height="100%" id="searchForm"  >

        <j:FormItem  id="labelNom"  label="nom :" width="100%" >
            <j:TextInput id="nom" >
                <j:beads>
                    <j:MaxNumberCharacters maxlength="{Ecran1Class.MAX_CHARS_NOM}" />
                    <!-- an alternative option below, getting the constant from this class -->
                   <!-- <j:MaxNumberCharacters maxlength="{LOCAL_MAX_CHARS_NOM}" />-->
                </j:beads>
            </j:TextInput>
        </j:FormItem>
    </j:Form>
</ecrans:Ecran1Class>


From base class:

package ecrans
{

import org.apache.royale.jewel.View;

    public class Ecran1Class extends View
{

        public static const MAX_CHARS_NOM:int = 25;

        public function Ecran1Class()
        {
            super();
        }

    }
}

Hope that helps. 


On Mon, May 18, 2020 at 6:22 PM Greg Dove <[hidden email]> wrote:

I will try to look at this in the next few hours.


On Mon, May 18, 2020 at 6:18 PM Alex Harui <[hidden email]> wrote:

Unfortunately, we could just have a bug in the Binding code.  My first thought when looking at the stack dump was “I wonder if we tested binding to a static const in a base class?”.  I’m hoping that folks who’ve spent more time debugging the binding code will step in and follow up with you.

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:49 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello in my different tries I put [Bindable] in front of my constant

 

[Bindable]

public

static

const MAX_CHARS_NOM:int =

50;

 

 

And the error stack disappears when I remove the [Bindable] but it doesn't solve my issue as the <j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" /> still shows an undefined value

 

Nicolas

 

Le lun. 18 mai 2020 à 07:32, Alex Harui <[hidden email]> a écrit :

Interesting.  I wonder if [hidden email] has time to look at this.  He’s been through more of these scenarios than I have.

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:24 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

 

this is the {MAX_CHARS_NOM} in my TextInput which is undefined and yes there is an error

 

 

TypeError: this.dispatcher is undefinedSimpleBinding.js:228:3

    set__strand file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/SimpleBinding.js:228

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:120

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/HTMLElementWrapper.js:50

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:378

    prepareCreatedBinding file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/DataBindingBase.js:79

    initBindingsHandler file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/ViewDataBinding.js:82

    <anonyme> self-hosted:844

    fireListeners file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:117

    dispatchEventInternal_ file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/library/closure/goog/events/eventtarget.js:382

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:80

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:243

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:70

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:144

    initialize file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:295

    start file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:264

    <anonyme> file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/TestBinding.html:155

 

Le lun. 18 mai 2020 à 07:17, Alex Harui <[hidden email]> a écrit :

What value is undefined?  Is there a call stack or error message?

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:09 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

Thanks for your reply, I tried what you suggested and added addBead(new
ContainerDataBinding()) to the constructor, I also tried to add to the
Ecran1.mxml the
<j:beads>
<js:ContainerDataBinding/>
</j:beads>

And read the different example provided Carlos and tried to mimic them,but I still get an undefined
value when I execute the application.

 

Le dim. 17 mai 2020 à 08:19, Alex Harui <[hidden email]> a écrit :

Hi Nicolas,

 

Looks like you are using the Jewel component set, so you may need to add ContainerDataBinding to the screens.  Different MXML files can have different binding implementation for performance reasons and there may not be one specified by default for PAYG reasons.

 

You can do that by adding the ContainerDataBinding bead to the MXML files for screens where you have binding expressions in the same way you added ApplicationDataBinding to the main app, or if Ecran1Class is only used as the top tag in an MXML file, then it should be safe to just add the ContainerDataBinding bead in the Ecran1Class constructor.

 

public function Ecran1Class()
{
super();

addBead(new ContainerDataBinding());
}
}

 

HTH,

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Saturday, May 16, 2020 at 10:31 PM
To: "[hidden email]" <[hidden email]>
Subject: Binding question/issue

 

Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}

Reply | Threaded
Open this post in threaded view
|

Re: Binding question/issue

tranquiliste
Hello Greg,

Thanks for your answer.
I will test that.

Nicolas

Le lun. 18 mai 2020 à 13:48, Greg Dove <[hidden email]> a écrit :

There's a few things to take note of here.

1. If you are binding to a static constant in another class, you need to reference it via the other class (even if it is in ancestry). This is the same as actionscript. That means importing the class inside a script block. You don't need to use member access on the class if it is the current class (the mxml document class).

2. The MaxNumberCharacters bead was not set up to be a binding target (it was not propagating changes after startup values). I updated that, so it should be usable in the way you want when you either rebuild, or download the next nightly build (whichever you are doing).

3. For custom classes, you need to make sure you use the correct namespace for the class level properties. This should be the same namespace as the class itself.

so for <ecran:Ecran1Class>

you would use
<ecran:beads> ...ContainerDataBinding bead here ...</ecran:beads>


Here's how I tested:

<ecrans:Ecran1Class xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:j="library://ns.apache.org/royale/jewel"
    xmlns:js="library://ns.apache.org/royale/basic"
    xmlns:ecrans="ecrans.*">

    <fx:Script>
        import ecrans.Ecran1Class;

        //alternative... see below
        public static const LOCAL_MAX_CHARS_NOM:int = 25;
    </fx:Script>

    <ecrans:beads>
        <js:ContainerDataBinding/>
    </ecrans:beads>

    <j:Form width="100%" height="100%" id="searchForm"  >

        <j:FormItem  id="labelNom"  label="nom :" width="100%" >
            <j:TextInput id="nom" >
                <j:beads>
                    <j:MaxNumberCharacters maxlength="{Ecran1Class.MAX_CHARS_NOM}" />
                    <!-- an alternative option below, getting the constant from this class -->
                   <!-- <j:MaxNumberCharacters maxlength="{LOCAL_MAX_CHARS_NOM}" />-->
                </j:beads>
            </j:TextInput>
        </j:FormItem>
    </j:Form>
</ecrans:Ecran1Class>


From base class:

package ecrans
{

import org.apache.royale.jewel.View;

    public class Ecran1Class extends View
{

        public static const MAX_CHARS_NOM:int = 25;

        public function Ecran1Class()
        {
            super();
        }

    }
}

Hope that helps. 


On Mon, May 18, 2020 at 6:22 PM Greg Dove <[hidden email]> wrote:

I will try to look at this in the next few hours.


On Mon, May 18, 2020 at 6:18 PM Alex Harui <[hidden email]> wrote:

Unfortunately, we could just have a bug in the Binding code.  My first thought when looking at the stack dump was “I wonder if we tested binding to a static const in a base class?”.  I’m hoping that folks who’ve spent more time debugging the binding code will step in and follow up with you.

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:49 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello in my different tries I put [Bindable] in front of my constant

 

[Bindable]

public

static

const MAX_CHARS_NOM:int =

50;

 

 

And the error stack disappears when I remove the [Bindable] but it doesn't solve my issue as the <j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" /> still shows an undefined value

 

Nicolas

 

Le lun. 18 mai 2020 à 07:32, Alex Harui <[hidden email]> a écrit :

Interesting.  I wonder if [hidden email] has time to look at this.  He’s been through more of these scenarios than I have.

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:24 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

 

this is the {MAX_CHARS_NOM} in my TextInput which is undefined and yes there is an error

 

 

TypeError: this.dispatcher is undefinedSimpleBinding.js:228:3

    set__strand file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/SimpleBinding.js:228

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:120

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/HTMLElementWrapper.js:50

    addBead file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:378

    prepareCreatedBinding file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/DataBindingBase.js:79

    initBindingsHandler file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/binding/ViewDataBinding.js:82

    <anonyme> self-hosted:844

    fireListeners file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:117

    dispatchEventInternal_ file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/library/closure/goog/events/eventtarget.js:382

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/events/EventDispatcher.js:80

    dispatchEvent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/ElementWrapper.js:243

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:70

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/UIBase.js:405

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/core/GroupBase.js:165

    initializeStrandBasedObject file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:241

    generateMXMLArray file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:127

    generateMXMLInstances file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/utils/MXMLDataInterpreter.js:271

    addedToParent file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/View.js:69

    addElement file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:144

    initialize file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:295

    start file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/org/apache/royale/jewel/Application.js:264

    <anonyme> file:///Users/nicolasA/Documents/dev/ApacheRoyale/TestBinding/bin/js-debug/TestBinding.html:155

 

Le lun. 18 mai 2020 à 07:17, Alex Harui <[hidden email]> a écrit :

What value is undefined?  Is there a call stack or error message?

 

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Sunday, May 17, 2020 at 10:09 PM
To: "[hidden email]" <[hidden email]>
Subject: Re: Binding question/issue

 

Hello Alex,

Thanks for your reply, I tried what you suggested and added addBead(new
ContainerDataBinding()) to the constructor, I also tried to add to the
Ecran1.mxml the
<j:beads>
<js:ContainerDataBinding/>
</j:beads>

And read the different example provided Carlos and tried to mimic them,but I still get an undefined
value when I execute the application.

 

Le dim. 17 mai 2020 à 08:19, Alex Harui <[hidden email]> a écrit :

Hi Nicolas,

 

Looks like you are using the Jewel component set, so you may need to add ContainerDataBinding to the screens.  Different MXML files can have different binding implementation for performance reasons and there may not be one specified by default for PAYG reasons.

 

You can do that by adding the ContainerDataBinding bead to the MXML files for screens where you have binding expressions in the same way you added ApplicationDataBinding to the main app, or if Ecran1Class is only used as the top tag in an MXML file, then it should be safe to just add the ContainerDataBinding bead in the Ecran1Class constructor.

 

public function Ecran1Class()
{
super();

addBead(new ContainerDataBinding());
}
}

 

HTH,

-Alex

 

From: Nicolas Aguttes <[hidden email]>
Reply-To: "[hidden email]" <[hidden email]>
Date: Saturday, May 16, 2020 at 10:31 PM
To: "[hidden email]" <[hidden email]>
Subject: Binding question/issue

 

Good morning all.
I am new to Apache Royale and I don't know how to make binding work
I have my main program which call some screens (ecrans.*)
each screen has its applicationScript where I define some constant that I would link to bind to the view, it compiles, but the binding doesn't work and shows undefine value.
I tried with differetn combination of
 <j:beads>
        <js:nnnnDataBinding/>
    </j:beads>
but without success.

Can someone tell we what I am doing wrong?
Thanks
Nicolas

Here is a non working extract of my code
----- Main ----
<?xml version="1.0" encoding="utf-8"?>
<j:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans="ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:html="library://ns.apache.org/royale/html"
width="100%"
height="100%">
   <j:beads>
        <js:ApplicationDataBinding/>
    </j:beads>
<j:initialView>
   <j:View id="vuePrincipale" width="100%" height="100%">
<j:View id="EcranBox" width="100%" height="100%">
<ecrans:Ecran1 id="Ecran1" />
    </j:View>

</j:View>
</j:initialView>
</j:Application>

----- Scren 1 .mxml  ------
<?xml version="1.0" encoding="utf-8"?>
<ecrans:Ecran1Class
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:ecrans = "ecrans.*"
xmlns:j="library://ns.apache.org/royale/jewel"
xmlns:html="library://ns.apache.org/royale/html"
xmlns:js="library://ns.apache.org/royale/basic"
    >
<j:Form width="100%" height="100%" id="searchForm"  >

<j:FormItem  id="labelNom"  label="nom :" width="100%" >
<j:TextInput id="nom" >  
<j:beads>
<j:MaxNumberCharacters maxlength="{MAX_CHARS_NOM}" />
</j:beads>
</j:TextInput>
</j:FormItem>
</j:Form>
</ecrans:Ecran1Class>


----- screen 1 .as  --------
package ecrans
{
import org.apache.royale.jewel.View;

public class Ecran1Class extends View
{
// Proprietes
[Bindable] public static const MAX_CHARS_NOM:int = 50;

// Constructeur
public function Ecran1Class()
{
super();
}
}

Nicolas