Framework7 Router Guard
by Maiki Nahara
HTML
<script src="https://unpkg.com/[email protected]/js/framework7.bundle.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/css/framework7.bundle.min.css">
<div id="app">
<div class="panel panel-left panel-cover theme-dark">
<div class="page"></div>
</div>
<div class="panel panel-right panel-reveal theme-dark">
<div class="page"></div>
</div>
<div class="view view-main ios-edges">
<div class="page" data-name="home">
<div class="navbar">
<div class="navbar-inner">
<div class="left">
<a href="#" class="link panel-open" data-panel="left">Left Panel</a>
</div>
<div class="title sliding">My App</div>
<div class="right">
<a href="#" class="link panel-open" data-panel="right">Right Panel</a>
</div>
</div>
</div>
<!-- Toolbar-->
<div class="toolbar toolbar-bottom">
<div class="toolbar-inner">
<a href="#" class="link">Left Link</a>
<a href="#" class="link">Right Link</a>
</div>
</div>
<div class="page">
<div class="navbar">
<div class="navbar-inner sliding">
<div class="left">
<a href="#" class="link back">
<i class="icon icon-back"></i>
<span class="if-not-md">Back</span>
</a>
</div>
<div class="title">Swipeable Tabs</div>
</div>
</div>
<div class="toolbar tabbar toolbar-bottom">
<div class="toolbar-inner">
<a href="#tab-1" class="tab-link tab-link-active">Tab 1</a>
<a href="#tab-2" class="tab-link">Tab 2</a>
<a href="#tab-3" class="tab-link">Tab 3</a>
</div>
</div>
<div class='page-content'>
<div class='list'>
<ul>
<li>
<a href="/auth-page/" class="item-link item-content"> auth page
</a>
...
JavaScript
var app = new Framework7({
root: '#app',
theme: 'auto',
routes: [{
path: '/auth-page/',
params: {
requireAuth: true
},
component: {
template: `
<div class="page">
<div class="navbar">
<div class="navbar-inner">
<div class="title">{{title}}</div>
</div>
</div>
<div class="page-content">
<div class="page-content">
<h1>auth page</h1>
</div>
</div>
</div>
`,
data: function() {
return {
title: 'Component Page',
names: ['John', 'Vladimir', 'Timo'],
}
},
methods: {
openAlert: function() {
var self = this;
self.$app.dialog.alert('Hello world!');
},
},
on: {
pageInit: function(e, page) {
// do something on page init
},
pageAfterOut: function(e, page) {
// page has left the view
},
}
},
},{
path: '/no-auth-page/',
params: {
requireAuth: true
},
component: {
template: `
<div class="page">
<div class="navbar">
<div class="navbar-inner">
<div class="title">{{title}}</div>
</div>
</div>
<div class="page-content">
<h1> no auth page</h1>
</div>
</div>
`
},
}]
});
/*
routeChange
(newRoute, previousRoute, router)
Event will be fired on current route change
*/
var viewMain = app.views.create('.view-main');
app.view.main.router.on('routeChange', function (newRoute, previousRoute, router) {
debugger
})