如何在登录页面framework7中隐藏面板和导航栏

时间:2018-11-30 09:20:35

标签: javascript html-framework-7

我只想在登录页面中正确隐藏面板和导航栏。登录后,我想显示给他们。我部分完成了这项任务,因为我的代码有不良的副作用。当我打开应用程序时,我看到了登录页面,但导航栏出现了几秒钟,然后消失了。我想在登录页面上访问而不会产生这种影响。我想立即看到没有他们的登录页面。 我该怎么解决?

我在index.html中声明了它们

 <div id="app">
    <div class="panel panel-left panel-cover">
        <div class="navbar color-theme-green ">
            <div class="navbar-inner sliding">
                <div class="title">Menu</div>
            </div>
        </div>
        <div class="block">
            <div class="list links-list">
                <ul>
                    <li>
                        <a href="/home/" class="panel-close">
                            <div class="item-content">
                                <div class="item-media">
                                    <i class="f7-icons ios-only">graph_square</i>
                                    <i class="material-icons md-only">dashboard</i>
                                </div>
                                <div class="item-inner">
                                    <div class="item-title">Home</div>
                                </div>
                            </div>
                        </a>
                    </li>                       
                    <li id="company" style="display:none;">
                        <a href="/company/" class="panel-close" >
                            <div class="item-content">
                                <div class="item-media">
                                    <i class="f7-icons ios-only">home</i>
                                    <i class="material-icons md-only">home</i>
                                </div>
                                <div class="item-inner">
                                    <div class="item-title">Company</div>
                                </div>
                            </div>
                        </a>    
                    </li>                       
                </ul>
            </div>
        </div>
    </div>
    <!-- Top Navbar -->
    <div class="navbar color-theme-green">
        <div class="navbar-inner sliding">
            <div class="left">
                <a class="link panel-open">
                    <i class="f7-icons ios-only">menu</i>
                    <i class="material-icons md-only">menu</i>
                    <!--<span class="ios-only">Back</span>-->
                </a>

                <a class="link back">
                    <i class="icon icon-back"></i>
                    <span class="ios-only">Back</span>
                </a>
            </div>
            <div class="title">My app</div>             
        </div>
    </div>

    <div class="view view-main"></div>

这是我的配置文件app.js,在其中显示和隐藏pageInitEvent上的元素

   var $$ = Dom7;

var app = new Framework7({
// App root element
root: '#app',
// App Name
name: 'myApp',
// App id
id: 'it.myapp.myApp',
theme: 'auto',
version: '0.0.1',
cacheDuration: 0,
cache: false,
stackPages: true,
preloadPreviousPage: true,


panel: {
    swipe: 'right',
    swipeNoFollow: true
},
/**
 * Routes
 */
routes: [
    {
        name: 'home',
        path: '/home/',
        url: './pages/home.html',
        on: {
            pageInit:   function(e, page) {

                            app.navbar.show('.navbar');                                             
                            page.router.clearPreviousHistory();
                        }

        },
    },
    {
        name: 'login',
        path: '/login/',
        url: './pages/login.html',
        on:{ 
                pageInit: function(){
                    app.navbar.hide('.navbar');

                    }
            },
    }

}

最后这是我的login.html页面,我在其中放置了无导航栏以将其隐藏。

<div data-name="login" class="page no-navbar no-toolbar no-swipeback">
<div class="page-content login-screen-content ">
    <!-- Login form -->
    <form id="form-login">
        <div class="row justify-content-center">
            <div class="col-100 tablet-80 desktop-50">
                <div class="card head-card-forest">
                    <div class="card-header">
                        <span></span><h2>Login</h2><span></span>
                    </div>
                    <div class="card-content card-content-padding">                             
                        <div class="row">
                            <div class="col-100 tablet-auto desktop-auto">
                                <div class="list no-hairlines-md">
                                    <ul>
                                        <li class="item-content item-input">
                                            <div class="item-inner">
                                                <div class="item-title item-label">Email</div>
                                                <div class="item-input-wrap">
                                                    <input type="text" name="username"  placeholder="Username">
                                                    <span class="input-clear-button"></span>
                                                </div>
                                            </div>
                                        </li>

                                        <li class="item-content item-input">
                                            <div class="item-inner">
                                                <div class="item-title item-label">Password</div>
                                                <div class="item-input-wrap">
                                                    <input type="password" name="password"  placeholder="Password">
                                                    <span class="input-clear-button"></span>
                                                </div>
                                            </div>
                                        </li>
                                    </ul>
                                </div>

                                <div class="block">
                                    <div class="row">
                                        <a class="col button button-fill" id="button-login" onclick="getLogin()"> Accedi </a>
                                    </div>                                      
                                </div>
                            </div><!--col-->                                    
                        </div><!--row-->
                    </div><!--card-content-->
                </div><!--.card-->                              
            </div><!--.col-->                   
        </div><!--.row-->   
    </form>
</div> <!-- ./ page-content -->

2 个答案:

答案 0 :(得分:2)

最好的办法是在初始化之前或挂载时隐藏导航栏 您可以尝试这两个

1:Beforeinit

 {
        name: 'login',
        path: '/login/',
        url: './pages/login.html',
        on:{ 
                pageBeforeIn: function(){
                    app.navbar.hide('.navbar');

                    }
            },
    }

2:当将其注入DOM时

   {
            name: 'login',
            path: '/login/',
            url: './pages/login.html',
            on:{ 
                    pageMounted: function(){
                        app.navbar.hide('.navbar');

                        }
                },
        }

pageInit将在所需的组件和导航栏加载后触发

答案 1 :(得分:0)

您可以使用pageInit事件将面板隐藏在登录页面中

pageInit : function (e,p) { p.app.panel.left.hide() }