# Page Switching
# Switching Pages and Passing Parameters via the Router Interface
# Switching Pages
Before using the router interface, you need to import the module first.
You can switch pages using router.push(OBJECT). For details about the uri parameter format supported by this method, refer to Page Routing.
Example:
<template>
<div class="page">
<input class="btn" type="button" value="Jump to New Page" onclick="routePage"></input>
</div>
</template>
<style>
.page {
flex-direction: column;
justify-content: center;
align-items: center;
}
.btn {
width: 400px;
height: 60px;
margin-top: 70px;
border-radius: 30px;
background-color: #09ba07;
font-size: 30px;
color: #ffffff;
}
</style>
<script>
// Import module
import router from '@system.router'
export default {
routePage () {
// Jump to a page within the app; cannot return to the current page
router.replace({
uri: '/Pages/newPage'
})
}
}
</script>
# Passing Parameters
The params parameter of the router interface can be used to configure parameters to be passed during page jumps.
Example:
<template>
<div class="page">
<input class="btn" type="button" value="Jump with Parameters" onclick="routePageReplaceWithParams"></input>
</div>
</template>
<style>
.page {
flex-direction: column;
justify-content: center;
align-items: center;
}
.btn {
width: 400px;
height: 60px;
margin-top: 70px;
border-radius: 30px;
background-color: #09ba07;
font-size: 30px;
color: #ffffff;
}
</style>
<script>
// Import module
import router from '@system.router'
export default {
private: {
title: 'Hello, world!'
},
onInit () {
console.info('Switch pages and pass parameters via the router interface')
},
routePageReplaceWithParams () {
// Jump to a page within the app
router.replace({
uri: '/PageParams/receiveparams',
params: { key: this.title }
})
}
}
</script>
# Receiving Parameters
Now that you know how to pass parameters between pages using the router interface, how do you receive them?
It's actually very simple: the method for receiving parameters passed by the router interface is consistent: declare the properties to be used in the protected attribute of the page's ViewModel.
Note
- Properties defined in
protectedcan be overwritten by data passed from internal page requests within the app but not by data passed from external requests. - If you want parameters to be overwriteable by data passed from external requests, declare the properties in the
publicattribute of the page's ViewModel.
Example:
<template>
<div class="page">
<text>page</text>
<!-- Display parameters passed to the page in the template -->
<text>{{key}}</text>
</div>
</template>
<style>
.page {
flex-direction: column;
justify-content: center;
align-items: center;
}
</style>
<script>
export default {
protected: {
key: ''
},
onInit () {
// Output parameters passed to the page in JavaScript
console.info('key: ' + this.key)
}
}
</script>