Welcome!

Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

Native Development

Reply
Contributor
Posts: 11
Registered: ‎02-22-2011
My Device: Not Specified
Accepted Solution

Sharing values between pages in NavigationPane

[ Edited ]

Hi,

 

I am trying out the NavigationPane with 2 pages. In the first page, I collects some values (via text fields, slider etc). After the user fills in all the values and click the "calculate" button, the second page will be pushed to the screen to display the results based on what the user entered before.

 

The way I am doing it right now is by storing the values from the "first" page into some global variables in a javascript file. The second page will then read from these variables and perform the necessary calculation.

 

First page:

import bb.cascades 1.0
import "ExtJS.js" as MortgageCal


NavigationPane {
    id: navPane
    Page {
        content: Container {
            id: mortgagePaymentSettingPage
            Container {
                TextField {
                    inputMode: TextFieldInputMode.PhoneNumber
                    id: valueTxt
                    onTextChanged: {
                        ExtJS.Value = Math.round(text)
                    }
                }
            }
        }
        actions: [
            ActionItem {
                title: "Calculate"
                ActionBar.placement: ActionBarPlacement.OnBar
                onTriggered: {
                    navPane.deprecatedPushQmlByString("resultPage.qml");
                }
            }
        ]
    }
}

 

Second page:

import bb.cascades 1.0
import "ExtJS.js" as MortgageCal

Page {
    content: Container {
        id: ResultPage
        Container {
            Label {
                text: "User Entered: " + ExtJS.Value
            }
           
        }
    }
}

 

I am wondering if there is a better alternative to make the values from the first page "visiable" to the second page? 

 

 

Thanks,

Developer
Posts: 107
Registered: ‎05-11-2011
My Device: BlackBerry Z10 LE
My Carrier: AirTel

Re: Sharing values between pages in NavigationPane

[ Edited ]

Hi,

 

solution is very simple . You can access valueTxt.text property in resultPage.qml like same qml.

when you write valueTxt in second page and put a dot , it will not give suggetion , you have to write manually.

when you compile it will work completely .

You can only access first qml varibale when second page is pushed by navigation pane .

 

Try this,

 

main.qml

import bb.cascades 1.0

NavigationPane {
    id: navPane
    Page {
        content: Container {
            id: mortgagePaymentSettingPage
            Container {
                TextField {
                    inputMode: TextFieldInputMode.PhoneNumber
                    id: valueTxt
                }
            }
        }
        actions: [
            ActionItem {
                title: "Calculate"
                ActionBar.placement: ActionBarPlacement.OnBar
                onTriggered: {
                    navPane.deprecatedPushQmlByString("resultPage.qml");
                }
            }
        ]
    }
}

 

resultPage.qml

 

import bb.cascades 1.0

Page {
    content: Container {
        Label {
            text: " I am First page Text : " + valueTxt.text
        }
    }
}

 

 

Contributor
Posts: 11
Registered: ‎02-22-2011
My Device: Not Specified

Re: Sharing values between pages in NavigationPane

Thanks! It works

Developer
Posts: 849
Registered: ‎03-03-2011
My Device: Z10

Re: Sharing values between pages in NavigationPane

OK, so IDs must be unique for whole app.
--------------------------------------------------------------------------------------
Leader of Ljubljana BlackBerry Developer Group
BlackBerry Certified Builder for Native Application Development
New Contributor
Posts: 5
Registered: ‎12-11-2012
My Device: Curve 9360
My Carrier: Att

Re: Sharing values between pages in NavigationPane

What if a page is pushed by navigationPane, and the variable is entered on the pushed page. Can that variable be seen by subsequent pushed pages?

In other words is there a way to make a variable available to all the pages in a stack no matter which page it is entered on?

 

 

 

 

New Contributor
Posts: 5
Registered: ‎12-11-2012
My Device: Curve 9360
My Carrier: Att

Re: Sharing values between pages in NavigationPane

I actually solved my own question.

 

On NavigationPane one can make a variable global by referencing Qt. In this case.

 

NavigationPane{
id:navPane
 Page{
    onCreationCompleted:{
    Qt.labelpage1=labelpage1;}
   Container{

   Label{
    id:labelpage1
     text:"Hello there"}...

 

//

labelpage1 can then be referenced on other pages as: 

 

Label{
  id:smileytongue:age2referencelabel
text:"Here is the entered text: " +Qt.labelpage1.text;
}

 

Developer
Posts: 109
Registered: ‎01-27-2012
My Device: Z10 + PlayBook 64GB
My Carrier: Vodafone

Re: Sharing values between pages in NavigationPane

[ Edited ]

Yep! it works great even in active frames!.

 

Thanks

_______________________________________________________
--- Catalonia, next state in Europe ----
Use the "solved" or "Like" icons if my answer helped you.

BES10 administrator for several customers.
"SMPTE Calculator" timecode APP developer for BB10