带loading中间态的视图
如果想异步去加载视图内容,在视图内容未加载完成前出现loading界面请参考这个例子的用法。
请在移动浏览器或打开chrome开发人员工具模拟移动浏览器查看demo。
Source
        Output
        QRCode
    <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
    <link href="//g.alicdn.com/kissy/k/5.0.1/css/base.css" rel="stylesheet"/>
    <link href="//g.alicdn.com/kissy/k/5.0.1/navigation-view/assets/dpl.css" rel="stylesheet">
    <link href="//g.alicdn.com/kissy/k/5.0.1/scroll-view/assets/dpl.css" rel="stylesheet"/>
    <style>
        body,html {
            height: 100%;
        }
        .ks-navigation-bar {
            position: fixed;
            height: 47px;
            width: 100%;
            box-sizing: border-box;
            z-index: 10;
        }
        .ks-navigation-view-content {
            margin-top: 47px;
        }
        ul, li {
            margin: 0;
            padding: 0;
        }
        .nav {
            color: #000;
            background: white;
            border: 1px solid #aaa;
            padding-left: 0;
        }
        .nav > li {
            text-indent: 0;
            font-size: 1.5em;
            margin: 0;
            display: block;
            position: relative;
            list-style-type: none;
            vertical-align: middle;
            box-sizing: border-box;
            padding: .5em .7em;
            padding-left: 1em;
            line-height: 1.6em;
            overflow: hidden;
            color: #000;
            border: 0;
            background: transparent;
            border-radius: 0;
            border-top: 1px solid rgba(180, 180, 180, 0.5);
        }
        .nav > li:first-child {
            border-top: 0;
        }
        .nav a {
            line-height: inherit;
            text-decoration: none;
            margin: -0.5em -0.7em;
            margin-left: -1em;
            padding-left: 1em;
            color: #000;
            display: block;
            position: relative;
            list-style-type: none;
            vertical-align: middle;
            -moz-box-sizing: border-box;
            -webkit-box-sizing: border-box;
            box-sizing: border-box;
            padding: .5em .7em;
        }
        .nav a:after {
            -webkit-text-fill-color: #fff;
            -webkit-transform: rotate(45deg);
            vertical-align: middle;
            margin-left: -0.2rem;
            border-style: solid;
            border-color: #777;
            content: "\a0";
            display: block;
            position: absolute;
            right: 1rem;
            top: 50%;
            margin-top: -0.32rem;
            color: #999ea9;
            width: .66rem;
            height: .64rem;
            border-width: 0;
            -webkit-box-shadow: inset -0.2rem .2rem 0 #999ea9;
            box-shadow: inset -0.2rem .2rem 0;
        }
        .nav .list-item-active a {
            background: #d9d9d9;
        }
        .ks-navigation-view-content {
            background: #eeeeee;
        }
        .anim-title {
            text-align: center;
            font-size: 18px;
            line-height: 24px;
            color: #444;
            text-shadow: rgba(255, 255, 255, 0.3) 0 1px 0;
            padding: 10px;
            width: 75%;
            margin: 0 auto;
        }
        .anim-content {
            text-align: center;
            font-size: 18px;
            line-height: 24px;
            color: #444;
            text-shadow: rgba(255, 255, 255, 0.3) 0 1px 0;
            padding: 10px;
            width: 75%;
            margin: 0 auto;
        }
        .ks-navigation-view-content > .ks-navigation-view-loading.ks-navigation-view-loading-hidden, .ks-navigation-view-content > div.ks-index-view-hidden,  .ks-navigation-view-content > div.ks-view-with-loading-hidden{
            display: none;
        }
        .after-loading{
            text-align: center;
            font-size: 20px;
            font-weight: bold;
            margin-top: 50px;
        }
    </style>
</head>
<body>
<script src="//g.alicdn.com/kissy/k/5.0.1/seed-debug.js"></script>
<script>
    require(['navigation-view','navigation-view/bar', 'component/control', 'node', 'promise'],function (NavigationView, Bar, Control, $, Promise) {
            var win = $(window);
            var navigationView = new NavigationView({
                loadingHtml: '<div class="ks-navigation-view-loading-outer">' +
                '<div class="ks-navigation-view-loading-inner"></div>' +
                '</div>',    //设置loading内容
                render: 'body'
            }).render();
            var bar = new Bar({
                navigationView: navigationView,
                elBefore: navigationView.get('contentEl')
            }).render();
            var IndexView = Control.extend({
                createDom : function(){
                    this.get('el').html('<ul class="nav"><li class="list-item">View with Loading</li></ul>');
                },
                bindUI : function(){
                    this.get('el').delegate('click', '.list-item', this.goNextView, this);
                },
                goNextView : function(ev){
                    navigationView.push({
                        xclass : 'view-with-loading',
                        title : 'view with loading'
                    })
                }
            },{
                xclass : 'index-view'
            });
            var ViewWithLoading = Control.extend({
                enter : function(){
                    var self = this;
                    self.defer = new Promise.Defer();  //给view设置defer/promise才会在页面未加载完的出现loading界面
                    self.promise = self.defer.promise;
                    win.on('resize', self.sync, self);
                    setTimeout(function(){  //异步执行。可以是Ajax去获取页面内容等
                        self.get('el').html('<div class="after-loading">after loading...</div>');
                        self.defer.resolve();  //通知loading结束
                    },1500)
                },
            },{
                xclass : 'view-with-loading'
            });
            navigationView.push({
                xclass : 'index-view',
                title : 'IndexView'
            });
        });
</script>
</body>
</html>
         
		