zoukankan      html  css  js  c++  java
  • apiCloud中实现头部与内容分离与操作规范,App头部header固定,头部与内容分离

    官方案例

    1.头部拆分成一个页面比如news-text

    <!doctype html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=0, width=device-width"/>
        <title>api</title>
        <link rel="stylesheet" type="text/css" href="../css/api.css" />
        <link rel="stylesheet" type="text/css" href="../css/common.css" />
        <link rel="stylesheet" type="text/css" href="../css/news-text.css" />
    </head>
    <body>
        <div id="wrap">
            <div id="header">
                <a class="back-icon" tapmode="" onclick="api.closeWin()"></a>
                <h1>热点新闻</h1>
            </div>
        </div>
    </body>
    <script type="text/javascript" src="../script/api.js"></script>
    <script type="text/javascript" src="../script/news-text.js"></script>
    </html>
    

    2.内容拆分成另一个页面比如news-textCon

    <!doctype html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=0, width=device-width"/>
        <title>api</title>
        <link rel="stylesheet" type="text/css" href="../css/api.css" />
        <link rel="stylesheet" type="text/css" href="../css/common.css" />
        <link rel="stylesheet" type="text/css" href="../css/news-text.css" />
    </head>
    <body>
        <div id="wrap">
            <div id="main">
            
            	<script id="news-template" type="text/x-dot-template">
                    <h1>{{=it.title}}</h1>
                    <label>
    	                {{? it.from }}
    	                	{{=it.from}}
    	                {{?}}
    	                <em>{{=it.date}}</em>
                    </label>
                    <div id="summary">
                    	{{=it.summary}}
                	</div>
                	<div>
                		{{=it.content}}
                	</div>
                	
                	<a id="fav" class="btn" tapmode="active" news-id="{{=it.id}}" >收藏</a>
                	
                </script>
            	
            	<div id="content"></div>
            	
            </div>
        </div>
    </body>
    <script type="text/javascript" src="../script/api.js"></script>
    <script type="text/javascript" src="../script/common.js"></script>
    <script type="text/javascript" src="../script/doT.min.js"></script>
    <script type="text/javascript" src="../script/zepto.js"></script>
    <script type="text/javascript" src="../script/news-textCon.js"></script>
    </html>
    

    以上就是一个非常规范的内容

    1.css在头部

    引入必要的css,api.css

    引入通用的css,common.css

    引入页面特有的css,news-text.css

    2.js在尾部

    引入必要的css,api.js

    引入通用的css,common.js

    引入页面特有的css,news-text.js

    根据页面需要,引入doT模板和zepto(手机端的jQuery替代品)

    来看看news-text.js中的内容

    
    apiready = function(){
        var header = $api.byId('header'); // 获取头部
        $api.fixStatusBar(header); // 处理ios兼容
    	
    	var newsId = api.pageParam.newsId; // 获取参数
        var pos = $api.offset(header); // 获取位置数据
        api.openFrame({ // 打开Frame
            name: 'news-textCon',
            url: 'news-textCon.html',
            pageParam: {newsId: newsId}, // 传递参数
            rect:{
                x: 0,
                y: pos.h, // 头部留位置
                w: 'auto',
                h: 'auto'
            },
            bounces: true,
            vScrollBarEnabled: false
        });
    };
    

    打开frame,保证头部留有位置,同时可以传递参数

    再看看news-textCon.js中的内容

    apiready = function () {
        var newsId = api.pageParam.newsId; // 获取参数
        var getNewsByIdUrl = '/news/?filter=';
        var urlParam = {where: {id: newsId}};
        api.showProgress({
            title: '加载中...',
            modal: false
        });
        ajaxRequest(getNewsByIdUrl+JSON.stringify(urlParam),'get','',function(ret,err){
            if (ret) {
                api.toast({
                    ...
                })
            } else {
                api.toast({
                    ...
                })
            }
            api.hideProgress();
        });
    };
    

    获取传入的参数,

    获取数据与相应的页面处理

    我的案例

    商品详情拆分

    1.goods_detail.html
    <!doctype html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=0, width=device-width"/>
        <title>api</title>
        <link rel="stylesheet" type="text/css" href="../css/api.css" />
        <link rel="stylesheet" type="text/css" href="../css/aui.2.0.css" />
    </head>
    <body>
    <div id="wrap">
        <div id="main">
            <header class="aui-bar aui-bar-nav fix-status-bar" id="aui-header">
                <a class="aui-btn aui-pull-left" tapmode onclick="api.closeWin();">
                    <span class="aui-iconfont aui-icon-left"></span>
                </a>
                <div class="aui-title"><!-- 商品名称 --></div>
            </header>
    
        </div>
    </div>
    </body>
    <script type="text/javascript" src="../script/api.js"></script>
    <script type="text/javascript" src="../script/goods_detail.js"></script>
    
    </html>
    
    2.goods_detailCon.html

    移除头部的

    <header class="aui-bar aui-bar-nav fix-status-bar" id="aui-header">
                <a class="aui-btn aui-pull-left" tapmode onclick="api.closeWin();">
                    <span class="aui-iconfont aui-icon-left"></span>
                </a>
                <div class="aui-title"><!-- 商品名称 --></div>
    </header>
    
    3.goods_detail.js
    apiready = function(){
        var header = $api.byId('main'); // 获取头部
        $api.fixStatusBar(header); // 处理ios
        var pos = $api.offset(header); // 获取头部位置
        var title  = $api.dom(header,'.aui-title'); // 获取标题位置
        $api.html(title,api.pageParam.title); // 设置标题内容
        api.openFrame({ // 打开内容页,并传递参数
            name: 'goods_detailCon',
            url: 'goods_detailCon.html',
            rect:{
                x: 0,
                y: pos.h,
                w: 'auto',
                h: 'auto'
            },
            bounces: true,
            opaque: true,
            vScrollBarEnabled: false,
            pageParam:{
                goods_id:api.pageParam.goods_id
            }
        });
    };
    
    4.goods_detailCon.js
    apiready = function(){
        fix_status_bar();// 修复头部
        var goods_id = api.pageParam.goods_id;
        // 获取商品相关信息
        api.ajax({
            url: 'http://zhudianbao.yunlutong.com/?g=Api&m=Goods&a=getGoodsInfo',
            method: 'get',
            data: {
                values: {
                    goods_id: goods_id
                }
            }
        }, function(json, err) {
            if (json.status == '1') {
                var interText = doT.template($("#goodstmpl").text());
                $("#info_area").html(interText(json.info));
                var swiper = new Swiper('.swiper-container', {
                    pagination: '.swiper-pagination',
                    paginationClickable: true,
                    spaceBetween: 30,
                    centeredSlides: true,
                    autoplay: 3500,
                    autoplayDisableOnInteraction: false
                });
            } else {
                var toast = new auiToast();
                toast.fail({
                    title:json.msg,
                    duration:2000
                });
            }
        });
    }
    
    

    获取参数,根据参数获取数据,并使用doT进行页面布局。

    看效果

  • 相关阅读:
    Sql Server系列:分区表操作
    [bug]WCF 内存入口检查失败 Memory gates checking failed
    由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
    如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响?
    IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案
    使用nginx搭建高可用,高并发的wcf集群
    NPOI读写Excel
    用 IIS 实现请求转发
    模型验证组件 FluentValidation
    C#中的 正则表达式
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/5952935.html
Copyright © 2011-2022 走看看