路由

路由

Tui Framework 页面为局部渲染,除了主页面index.html是完整的html之外,其他页面均是div块级,当请求新页面,自动渲染到index.html中。 这意味着我们如果想混合开发app应用,我们也可以把所写的app html代码全部放在服务器端,只要在app首页执行跳转即可。如果想打包到手机中使用, 服务器端需要开启跨域权限。 Tui Framework的路由也与传统的路由不同,不需要过多复杂的配置,只需要在标签中定义需要跳转的href地址,添加.route类,就可以实现。例如:

    <a href="message.html?id=1" class="link_item route">消息</a>

这时点击a就会跳转到message.html页面。

方法

1.下一页:在标签中增加.route的css类,href属性为下一页地址,当点击该a标签时实现跳转到下一页。

    <a href="message.html?id=1" class="link_item route">消息</a>

如果我们把html文件打包到手机中,通常情况,我们会需要向跳转的页面传值提供两种传值方式: 1.通过在href中的message.html?id=1网址传值 2.也提供标签属性params只需要给params属性中设置需要传送的值即可,params权重比url高,可覆盖url中传值。

    <a href="order.html" params='{order_id: 15}' class="link_item route">订单详情</a>

这样我们就可以在order订单详情页,通过request获取order_id的值。 order.html

    <script>
        var order_id = request.order_id;  //获取order_id
    </script>

2.自定义下一页:除了含有.route类的a标签外,还提供自定义下一页方法:

    t.toNextPage(url, data);      //参数url为下一页的地址,data为需要传递的数据,获取数据方法同上。

3.返回上一页: 3.1 在标签中添加.back的css类,url属性为上一页地址,当点击该a标签时实现返回上一页。

    <div class="left">
        <a href="index.html" class="back link">
            <i class="icon icon-back" style="transform: translate3d(0px, 0px, 0px);"></i>
        </a>
    </div>

3.2 除了自定义的返回地址之外,框架还提供自动返回功能。只需要去除href或者设置成”“即可实现自动返回上一页,并且携带当时传递参数的功能。

    <div class="left">
        <a class="back link">
            <i class="icon icon-back" style="transform: translate3d(0px, 0px, 0px);"></i>
        </a>
    </div>

4.自定义上一页:除了含有.back类的a标签外,还提供自定义上一页方法:

    t.toPrePage(url, data);      //参数url为上一页的地址,data为需要传递的数据,获取数据方法同上。

事件

标签中局部事件实例

    <a href="order.html" params='{order_id: 15}' onJump="setval" class="link_item route">订单详情</a>
    <script>
        //配置onJump触发事件
        function setval(){
            ...
        }
    </script>

js中局部事件实例

    t.onBack = function(){
        //处理返回前事件
    }
    t.onJump = function(){
        //处理下一页返回事件
    }

局部事件说明

事件名称 事件对象 事件描述
onJump .route .back 此为标签中使用,当页面跳转前触发,为路由标签使用,此事件为局部事件,不可在全局事件中使用。
onBack t 当页面返回上一页前触发,此事件为局部事件,不可在全局事件中使用。
onJump t 当页面跳转下一页前触发,此事件为局部事件,不可在全局事件中使用。

添加全局事件实例:

    t.eventAdd(action, onevent); //增加全局事件,事件对象为`.page`。参数action为事件名称,onevnet为事件委托。

全局事件说明

事件名称 事件对象 事件描述
beforePre .page 返回上一页之前触发。
afterPre .page 返回上一页完成之后触发。
beforeNext .page 跳转到下一页之前触发。
afterNext .page 跳转到下一页完成之后触发。
load .page 页面加载完成之后触发

快速开始

页面布局

Tui Framework本着简单易用敏捷高效为原则设计。页面之间通过局部渲染完成页面切换。 这意味着我们如果想混合开发app应用,我们也可以把所写的app html代码全部放在服务器端,只要在app首页执行跳转即可。 ui布局也同样简单,只需要简单的组合就可以呈现app样式,让开发人员可把精力都放在业务逻辑上面。 app布局,首先创建index.html文件为默认文件:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <title>Tui Framework</title>
    <script type="application/javascript" src="js/jquery-1.12.0.js"></script>
    <script type="application/javascript" src="js/tui.js"></script>
    <link rel="stylesheet" href="css/tui.css">
    <link href="css/ionicons.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- view -->
<div class="view">
    <!-- 页面 -->
    <div style="" class="page">
        <!-- 当前页面,class为current的 -->
        <div class="current">
            <!-- app头部 -->
            <div class="nav">
                <div class="left"></div>
                <div class="center" style="left: -6.5px;">Tui FrameWork</div>
                <div class="right"></div>
            </div>
            <!-- app内容部分 -->
            <div class="content">
                <div class="head-pull"></div>
                <div class="page-content">
                    <ul>
                        <li><a href="message.html" class="link_item route">
                            <div class="item">
                                <!--<div class="item_left"></div>-->
                                <div class="item_center item_icon_right">
                                    <div class="item-content">聊天</div>
                                    <!--<div class="item_after"></div>-->
                                </div>
                            </div>
                        </a></li>
                        <li><a href="regist.html" class="link_item route">
                            <div class="item">
                                <!--<div class="item_left"></div>-->
                                <div class="item_center item_icon_right">
                                    <div class="item-content">注册</div>
                                    <!--<div class="item_after"></div>-->
                                </div>
                            </div>
                        </a></li>
                        <li><a href="login.html" class="link_item route">
                            <div class="item">
                                <!--<div class="item_left"></div>-->
                                <div class="item_center item_icon_right">
                                    <div class="item-content">登陆</div>
                                    <!--<div class="item_after"></div>-->
                                </div>
                            </div>
                        </a></li>
                    </ul>
                </div>
                <div class="page-content-bottom"></div>
            </div>
        </div>
    </div>
</div>
</body>
</html>

头部

app头部div:<div class="nav"> ... </div>。里面分为三块,左右中,左和右分别是放置icon按钮,中间为app标题。 <div class="left"></div>左边、<div class="center" style="left: -6.5px;">Tui FrameWork</div>中间标题、<div class="right"></div>右边。 中间标题位置可以通过left或者translate3d来设置。

内容

app内容div:<div class="content"> ... </div>,其中里面的.page-content是放置具体内容的。

页面布局

页面布局

页面布局结构 .view -> .page -> .current.current中分为.nva头部导航栏、.content中间内容、.toolbar底部工具栏。

<div class="view">
    <div style="" class="page">
        <div class="current">
            <!-- 顶部导航栏 -->
            <div class="nav">
                <div class="left">
                    <a href="javascript:;" class="back link">
                        <i class="icon icon-back"></i><span>back</span>
                    </a>
                </div>
                <div class="center" style="left: -6.5px; transform: translate3d(0px, 0px, 0px);">Tui FrameWork</div>
                <div class="right">
                    <a href="javascript:;" class="menu_left"><i class="icon icon-bars"></i></a>
                </div>
            </div>
            <!-- 中间内容 -->
            <div class="content">
                <div class="head-pull"></div>
                <div class="page-content">
                    <!-- 具体页面内容,ui组件 -->
                </div>
                <div class="page-content-bottom"></div>
            </div>
            <!-- 底部工具栏 -->
            <div class="toolbar">
                <a class="tab-link tab-link-active" href="#tab1">
                    <i class="icon ion-home"></i>
                    <span class="">test</span>
                </a>
                <a class="tab-link" href="#tab2">
                    <i class="icon ion-home">
                        <span class="badge bg_red">5</span>
                    </i>
                    <span class="">test</span>
                </a>
                <a class="tab-link" href="#tab3">
                    <i class="icon ion-home"></i>
                    <span class="">test</span>
                </a>
                <a class="tab-link" href="#tab4">
                    <i class="icon ion-home"></i>
                    <span class="">test</span>
                </a>
            </div>
        </div>
    </div>
</div>

头部导航栏

    <div class="nav">
        <div class="left">
            <a href="" class="back link">
                <i class="icon icon-back"></i><span>back</span>
            </a>
        </div>
        <div class="center" style="left: -6.5px; transform: translate3d(0px, 0px, 0px);">Tui FrameWork</div>
        <div class="right">
            <a href="javascript:;" class="menu_left"><i class="icon icon-bars"></i></a>
        </div>
    </div>

app头部div:<div class="nav"> ... </div>。里面分为三块,左右中,左和右分别是放置icon按钮,中间为app标题。 <div class="left"></div>左边、<div class="center" style="left: -6.5px; transform: translate3d(0px, 0px, 0px);">Tui FrameWork</div>中间标题、<div class="right"></div>右边。 中间标题位置可以通过left或者translate3d来设置。

中间内容

    <div class="content">
        <div class="head-pull"></div>
        <div class="page-content">
            <!-- 具体页面内容,ui组件 -->
        </div>
        <div class="page-content-bottom"></div>
    </div>

app内容div:<div class="content"> ... </div>,其中里面的.page-content是放置具体内容的。

底部工具栏

    <div class="toolbar">
        <a class="tab-link tab-link-active" href="#tab1">
            <i class="icon ion-home"></i>
            <span class="">test</span>
        </a>
        <a class="tab-link" href="#tab2">
            <i class="icon ion-home">
                <span class="badge bg_red">5</span>
            </i>
            <span class="">test</span>
        </a>
        <a class="tab-link" href="#tab3">
            <i class="icon ion-home"></i>
            <span class="">test</span>
        </a>
        <a class="tab-link" href="#tab4">
            <i class="icon ion-home"></i>
            <span class="">test</span>
        </a>
    </div>

底部工具栏div:<div class="toolbar"> ... </div>

左侧菜单

左侧菜单

左侧菜单放置在.current里,在.nav上面即可。

<div class="view">
    <div style="" class="page">
        <div class="current">
            <!-- 左侧菜单 -->
            <div id="leftMenu" class="left_menu">
                <div class="nav">
                    <div class="center" style="transform: translate3d(0px, 0px, 0px);">Tui FrameWork</div>
                </div>
                <div class="content">
                    <div class="left_menu_content">
                        <ul>
                            <li><a href="javascript:;" class="link_item">
                                <div class="item">
                                    <!--<div class="item_left"></div>-->
                                    <div class="item_center">
                                        <div class="item-title">With switch</div>
                                        <!--<div class="item_after"></div>-->
                                    </div>
                                </div>
                            </a></li>
                            <li><a href="javascript:;" class="link_item">
                                <div class="item">
                                    <!--<div class="item_left"></div>-->
                                    <div class="item_center">
                                        <div class="item-title">With switch</div>
                                        <!--<div class="item_after"></div>-->
                                    </div>
                                </div>
                            </a></li>
                            <li><a href="javascript:;" class="link_item">
                                <div class="item">
                                    <!--<div class="item_left"></div>-->
                                    <div class="item_center">
                                        <div class="item-title">With switch</div>
                                        <!--<div class="item_after"></div>-->
                                    </div>
                                </div>
                            </a></li>
                        </ul>
                    </div>
                </div>
            </div>
            <!-- 顶部导航栏 -->
            <div class="nav">
                <div class="left">
                    <a href="javascript:;" class="back link">
                        <i class="icon icon-back"></i><span>back</span>
                    </a>
                </div>
                <div class="center" style="left: -6.5px; transform: translate3d(0px, 0px, 0px);">Tui FrameWork</div>
                <div class="right">
                    <a id="menuBtn" href="javascript:;" class="menu_left"><i class="icon icon-bars"></i></a>
                </div>
            </div>
            <!-- 中间内容 -->
            <div class="content">
                <div class="head-pull"></div>
                <div class="page-content">
                    <!-- 具体页面内容,ui组件 -->
                </div>
                <div class="page-content-bottom"></div>
            </div>
            <script>
                t("#menuBtn").sideMenu("leftMenu");  //设置按钮menuBtn所要打开的左侧菜单。
            </script>
        </div>
    </div>
</div>

左侧菜单html代码结构与current结构类似,也包含.nav(头部导航栏)和.content(具体内容)。根据我们的业务不同,可能会出现多组菜单,所以提供了可以滑出指定菜单的功能,

    t("#menuBtn").sideMenu("leftMenu");  //设置按钮menuBtn所要打开的左侧菜单。

绑定id为menuBtn的a标签的滑出菜单id为leftMenu的菜单。

表单

文本

    <input type="text" placeholder="Your text">

多行文本

    <textarea rows="10" cols="10"></textarea>

email

    <input type="email" placeholder="Your email">

密码

    <input type="password" placeholder="Your password">

网址

    <input type="url" placeholder="Your url">

电话

    <input type="tel" placeholder="Your tel">

下拉

    <select>
        <option>Male</option>
        <option>Female</option>
    </select>

开关

    <label class="label-switch">
        <input type="checkbox">
        <div class="checkbox"></div>
    </label>

多选

    <li class="link_item checkbox">
        <div class="item">
            <div class="item_left">
                <input id="checkbox1" type="checkbox" class="ck">
                <label for="checkbox1" class="lb-ck"></label>
            </div>
            <div class="item_center">
                <div class="item-input">
                    多选样式1
                </div>
                <!--<div class="item_after"></div>-->
            </div>
        </div>
    </li>
    <li class="link_item checkbox">
        <div class="item">
            <div class="item_left">
                <input id="checkbox2" type="checkbox" class="ck">
                <label for="checkbox2" class="lb-ck-badge"></label>
            </div>
            <div class="item_center">
                <div class="item-input">
                    多选样式2
                </div>
                <!--<div class="item_after"></div>-->
            </div>
        </div>
    </li>

单选

    <li class="link_item radio">
        <div class="item">
            <div class="item_center">
                <div class="item-input col-90">
                    单选样式1
                </div>
                <div class="item_btn middle col-10">
                    <input type="radio" value="1" id="radio1" name="radio" class="rd" checked="checked">
                    <label for="radio1" class="lb-rd"></label>
                </div>
            </div>
        </div>
    </li>
    <li class="link_item radio">
        <div class="item">
            <div class="item_center">
                <div class="item-input col-90">
                    单选样式2
                </div>
                <div class="item_btn middle col-10">
                    <input type="radio" value="2" id="radio2" name="radio" class="rd">
                    <label for="radio2" class="lb-rd"></label>
                </div>
            </div>
        </div>
    </li>

日期

    <input type="date" placeholder="2016-04-11">

时间

    <input type="time" placeholder="11:11">

日期时间

    <input type="datetime-local" placeholder="2016-04-11">

表单验证

表单验证实例

	t("#form_validate").validate({
		"rules": {
			"username": {require: {message: "请输入姓名"}, length: {max: 10, min: 3, message: "长度必须小于10大于1;"}},
			"gender": {require: {message: "请输选择性别"}},
			"remark": {require: {message: "请输入备注"}},
			"phone": {phone: {message: "手机号不合法"}},
			"cd": {cd: {message: "身份证不合法"}},
			"number": {type: {type: "number", message: "不是整数"}},
			"float": {type: {type: "float", message: "不是小数"}},
		},
		"onerror": function(error){
			alert(error.join(";"));
		}
	});

调用form方法.validate(params)来实现对表单的验证。 params参数说明,params总共由3个对象组成:rules,onerror,onsuccess。rules为验证规则、其他两个是成功和失败的事件。rules中的每一个对象都是form表单元素的name属性值。 rules中验证说明 ======

参数名称 类型 默认 描述
require json 不能为空。
length json 长度,其中包括`max`最大长度和`min`最小长度。
phone json 验证手机号。
cd json 验证身份证号
type json 验证类型,其中type类型包括:`number`整数型,`+number`正整数型,`-number`负整数型,`float`浮点型,`+float`正浮点型,`-float`负浮点型,`decimal`金钱类型
regex Regexp 正则表达式验证,regex为正则表达式例如:/^-[0-9]*[1-9][0-9]*$/
message string 为错误提示信息!`通用`

事件

事件名称 事件参数 事件描述
onerror message:错误信息数组 当验证失败时触发。
onsuccess 当验证成功时触发。

按钮

按钮

按钮.btn,小按钮.btn-sm

背景可选颜色:.bg_blue .bg_green .bg_red .bg_orange .bg_pink .bg_purple .bg_cyan .bg_teal .bg_indigo

文字可选颜色:.blue .green .red .orange .pink .purple .cyan .teal .indigo

按钮宽度:宽度自适应,取决于外层div的宽度。一般配合col-*使用,结构是.row -> .col-*,样式如下:

	<div class="page-content inset">
		<div class="row">
			<div class="cols-30">
				<a href="action.html" class="route btn bg_blue">action</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn bg_green">fsd</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn bg_red">fsd</a>
			</div>
		</div>
		<div class="row">
			<div class="cols-30">
				<a href="" class="btn bg_orange">fsd</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn bg_pink">fsd</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn bg_purple">fsd</a>
			</div>
		</div>
		<div class="row">
			<div class="cols-30">
				<a href="" class="btn bg_cyan">fsd</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn bg_teal">fsd</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn bg_indigo">fsd</a>
			</div>
		</div>
		<div class="row">
			<div class="cols-30">
				<a href="" class="btn red btn-border"><i class="icon btn-icon ion-android-add" style="top: 2px;"></i>fsd</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn green">fsd</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn blue">fsd</a>
			</div>
		</div>
		<div class="row">
			<div class="cols-30">
				<a href="" class="btn pink">fsd</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn orange">fsd</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn purple">fsd</a>
			</div>
		</div>
		<div class="row">
			<div class="cols-30">
				<a href="" class="btn cyan">fsd</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn teal">fsd</a>
			</div>
			<div class="cols-30">
				<a href="" class="btn indigo">fsd</a>
			</div>
		</div>
		<div class="row">
			<div class="cols-50">
				<a href="" class="btn bg_green">fsd</a>
			</div>
			<div class="cols-50">
				<a href="" class="btn bg_red">fsd</a>
			</div>
		</div>
		<div class="row">
			<div class="col-100">
				<a href="" class="btn bg_green">fsdss</a>
			</div>
		</div>
	</div>

同时也支持块状按钮

    <div class="page-content">
        <ul>
            <li>
                <a href="#" class="link_item">
                    <div class="item">
                        <div class="item_center">
                            <div class="item-content">tuiFramework</div>
                            <div class="item_btn bg_red middle">2016-3-12</div>
                        </div>
                    </div>
                </a>
            </li>
            <li>
                <a href="#" class="link_item">
                    <div class="item">
                        <div class="item_center">
                            <div class="item-content">tuiFramework</div>
                            <div class="item_btn bg_green middle">2016-3-12</div>
                        </div>
                    </div>
                </a>
            </li>
            <li>
                <a href="#" class="link_item">
                    <div class="item">
                        <div class="item_center">
                            <div class="item-content">tuiFramework</div>
                            <div class="item_btn bg_blue middle">2016-3-12</div>
                        </div>
                    </div>
                </a>
            </li>
        </ul>
    </div>

actionsheet

actionsheet

actionsheet方法:t.popupAction(popup_id, function(obj){}) 参数1:要弹出的div的id。
参数2:处理弹出后点击按钮的事件,其中obj.action为按钮的名称,用来判断用户点击了哪个按钮。

样式1

    <a id="action1" href="" class="btn bg_teal">action1</a>
            
    <div id="action-modal1" class="popup-action">
        <div class="action-title">
            <div class="center" style="width: 100%">tui framework</div>
        </div>
        <div class="action-btn middle modal-btn">alert</div>
        <div class="action-btn middle modal-btn">cancel</div>
        <div class="action-btn middle modal-btn">config</div>
    </div>
    
    <script>
        t("#action1").click(function(){
            t.popupAction("action-modal1");
            return false;
        });
    </script>

样式2

    <a id="action2" href="" class="btn bg_blue">action2</a>
            
    <div id="action-modal2" class="popup-action">
        <div class="action-title">
            <div class="blue title-btn action-btn middle">取消</div>
            <div class="center">tui framework</div>
            <div class="title-btn blue action-btn middle">完成</div>
        </div>
        <div class="action-content">
            <p>
                fdsajfdsafkjlsdalfkslafjdfdjaslkfd;safdlasjfdsafdsalkfdsafj;dsafjdls;afkdslafdasklf;dsjafjklsafjldsa;jfkldsa;fjdksla;fds123123</p>
            <p>
                fdsajfdsafkjlsdalfkslafjd
                fdjaslkfd;safdlasjfdsa
                fdsalkfdsafj;dsafjdls;afkdsla
                fdasklf;dsjafjklsafjldsa;
                jfkldsa;fjdksla;fds
            </p>
            <p>
                fdsajfdsafkjlsdalfkslafjd
                fdjaslkfd;safdlasjfdsa
                fdsalkfdsafj;dsafjdls;afkdsla
                fdasklf;dsjafjklsafjldsa;
                jfkldsa;fjdksla;fds
            </p>
        </div>
    </div>
    
    <script>
        t("#action2").click(function(){
            t.popupAction("action-modal2");
            return false;
        });
    </script>

样式3

    <a id="action3" href="" class="btn bg_cyan">action3</a>
    
    <div id="action-modal3" class="popup-action">
        <div class="action-title">
            <div class="blue title-btn action-btn middle">取消</div>
            <div class="center">tui framework</div>
            <div class="title-btn blue action-btn middle">完成</div>
        </div>
        <div class="action-select">
            <div class="select-item">
                <ul id="u1">
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                </ul>
            </div>
            <div class="select-item">
                <ul id="u2">
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                </ul>
            </div>
            <div class="select-item">
                <ul id="u3">
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                    <li>fdsafsa</li>
                </ul>
            </div>
        </div>
    </div>
    
    <script>
        t("#action3").click(function(){
            t.popupAction("action-modal3");
            return false;
        });
    </script>

样式4

    <a id="action4" href="" class="btn bg_cyan">透明</a>
    
    <div id="action-4" class="popup-action popup-action-op">
        <div class="action-btn middle modal-btn">alert</div>
        <div class="action-btn middle modal-btn">cancel</div>
        <div class="action-btn middle modal-btn">config</div>
    </div>
    
    <script>
        t("#action4").click(function(){
            t.popupAction("action-4");
            return false;
        });
    </script>

通知

通知

系统通知方法:t.notice(message, onNoticeClick)
参数1:通知内容。
参数2:处理通知点击事件。

    t("#notice").click(function () {
        t.notice("您有新的订单,请查看!", function () {

        });
        return false;
    });

打开应用通知:t.appNoticeOpen (message, noticeClickCallback)
参数1:message通知内容
参数2:通知点击事件
返回:通知的div节点 关闭应用通知:t.appNoticeClose (notice)
参数:notice通知的div节点

    var app_notice = null;
    t("#noticeShow").click(function () {
        app_notice = t.appNoticeOpen("您有新的订单,请注意查看!!!");
        return false;
    });
    t("#noticeHide").click(function () {
        t.appNoticeClose(app_notice);
        return false;
    });

遮盖板

遮盖板

打开遮盖板:t.maskOn(clickcallback)
参数1:遮盖板点击事件。

    t.maskOn();

关闭遮盖板

    t.maskOff();

列表

列表

普通列表:整体是ul,每行为li。如果行为链接,可以在a中加入.route.item下分为.item_left.item_center分别是左中位置。

    <ul>
        <li><a href="javascript:;" class="link_item">
            <div class="item">
                <!--<div class="item_left"></div>-->
                <div class="item_center">
                    <div class="item-content">tuiFramework</div>
                    <!--<div class="item_after"></div>-->
                </div>
            </div>
        </a></li>
        <li><a href="javascript:;" class="link_item">
            <div class="item">
                <!--<div class="item_left"></div>-->
                <div class="item_center item_icon_right">
                    <div class="item-content">tuiFramework</div>
                    <!--<div class="item_after"></div>-->
                </div>
            </div>
        </a></li>
        <li><a href="javascript:;" class="link_item">
            <div class="item">
                <!--<div class="item_left"></div>-->
                <div class="item_center item_icon_right">
                    <div class="item-content">tuiFramework</div>
                    <div class="item_after">2016-03-12</div>
                </div>
            </div>
        </a></li>
    </ul>

带图片或图标的列表

带图片的列表,只需要在.item_left中加入图片或图标即可。

    <ul>
        <li>
            <a href="javascript:;" class="link_item">
                <div class="item item-trim">
                    <div class="item_left">
                        <div class="item-icon-l-b bg_blue">
                            <i class="icon ion-android-apps"></i>
                        </div>
                    </div>
                    <div class="item_center">
                        <div class="item-content">tuiFramework</div>
                        <!--<div class="item_after"></div>-->
                    </div>
                </div>
            </a>
        </li>
        <li>
            <a href="javascript:;" class="link_item">
                <div class="item item-trim">
                    <div class="item_left">
                        <div class="item-icon-l-b bg_orange">
                            <i class="icon ion-android-alert"></i>
                        </div>
                    </div>
                    <div class="item_center item_icon_right">
                        <div class="item-content">tuiFramework</div>
                        <!--<div class="item_after"></div>-->
                    </div>
                </div>
            </a>
        </li>
        <li>
            <a href="javascript:;" class="link_item">
                <div class="item item-trim-l">
                    <div class="item_left">
                        <div class="item-icon-l">
                            <i class="icon ion-android-apps orange"></i>
                        </div>
                    </div>
                    <div class="item_center item_icon_right">
                        <div class="item-content">tuiFramework</div>
                    </div>
                </div>
            </a>
        </li>
        <li>
            <a href="javascript:;" class="link_item">
                <div class="item item-trim-l">
                    <div class="item_left">
                        <div class="item-icon-l">
                            <i class="icon ion-android-alert blue"></i>
                        </div>
                    </div>
                    <div class="item_center item_icon_right">
                        <div class="item-content">tuiFramework</div>
                    </div>
                </div>
            </a>
        </li>
        <li>
            <a href="javascript:;" class="link_item">
                <div class="item">
                    <div class="item_left">
                        <img src="imgs/t1.jpeg" width="40">
                    </div>
                    <div class="item_img_center item_icon_right">
                        <div class="item-content">tuiFramework</div>
                        <div class="item_after">2016-03-12</div>
                    </div>
                </div>
            </a>
        </li>
        <li>
            <a href="javascript:;" class="link_item">
                <div class="item">
                    <div class="item_left">
                        <img src="imgs/t1.jpeg" width="40">
                    </div>
                    <div class="item_img_center">
                        <div class="item-content">tuiFramework</div>
                        <!--<div class="item_after">2016-03-12</div>-->
                    </div>
                </div>
            </a>
        </li>
        <li>
            <a href="javascript:;" class="link_item">
                <div class="item">
                    <div class="item_left">
                        <div class="item-icon-l">
                            <i class="icon ion-android-apps orange"></i>
                        </div>
                    </div>
                    <div class="item_center item_icon_right">
                        <div class="item-content">tuiFramework</div>
                    </div>
                </div>
            </a>
        </li>
        <li>
            <a href="javascript:;" class="link_item">
                <div class="item">
                    <div class="item_left">
                        <div class="item-icon-l">
                            <i class="icon ion-android-alert blue"></i>
                        </div>
                    </div>
                    <div class="item_center item_icon_right">
                        <div class="item-content">tuiFramework</div>
                    </div>
                </div>
            </a>
        </li>
    </ul>

数字图标

数字图标

数字图标.badge,可以通过背景颜色改变颜色.bg_blue

    <span class="badge bg_blue">5</span>
    <span class="badge bg_green">5</span>
    <span class="badge bg_orange">5</span>
    <span class="badge bg_teal">5</span>
    <span class="badge bg_red">5</span>

轮播图

轮播图

轮播图有两种,一种是自动轮播,一种是滑动轮播。

    <div style="height: 200px;" class="slider">
        <div class="slide-paginations"></div>
        <div class="slide-items">
            <div class="slide-item">fds1</div>
            <div class="slide-item">fds2</div>
            <div class="slide-item">fds3</div>
            <div class="slide-item">fds4</div>
        </div>
    </div>
    <script>
        t("#slider1").slide(true, 3000);
    </script>

轮播图方法:t("#slider1").slide(isloop, time)
参数1:isloop是否自动轮播。true为自动轮播,false为滑动轮播。
参数2:自动轮播的间隔时间,单位毫秒。

滑动轮播:

    <script>
        t("#slider1").slide(false);
    </script>

多级联动

多级联动

多级联动,理论可以无限级联动,首先定义级联需要的下拉选,下拉必须带有id:<select name="" id="province"></select>,需要几级创建几个。

    <ul>
        <li>
            <a href="javascript:;" class="link_item">
                <div class="item">
                    <div class="item_center">
                        <div class="item-title label">With switch</div>
                        <div class="item-input">
                            <select name="" id="province">
                                <option value=""></option>
                            </select>
                        </div>
                    </div>
                </div>
            </a>
        </li>
        <li>
            <a href="javascript:;" class="link_item">
                <div class="item">
                    <div class="item_center">
                        <div class="item-title label">With switch</div>
                        <div class="item-input">
                            <select name="" id="city">
                                <option value=""></option>
                            </select>
                        </div>
                    </div>
                </div>
            </a>
        </li>
        <li>
            <a href="javascript:;" class="link_item">
                <div class="item">
                    <div class="item_center">
                        <div class="item-title label">With switch</div>
                        <div class="item-input">
                            <select name="" id="region">
                                <option value=""></option>
                            </select>
                        </div>
                    </div>
                </div>
            </a>
        </li>
    </ul>
    <script>
        var data = [
            {select_id: "#province", value: 2, options: [{id: 1, pid: 0, name: "SS1"}, {id: 2, pid: 0, name: "AA1"}]},
            {select_id: "#city", value: 2, options: [{id: 1, pid: 1, name: "SS2"}, {id: 2, pid: 2, name: "AA2"}]},
            {select_id: "#region", value: 2, options: [{id: 1, pid: 1, name: "SS3"}, {id: 2, pid: 2, name: "AA3"}]}
        ]
        t.moreSelect(data);
    </script>

创建完select节点后,定义数据,数据结构为json数据,每个json为一组下拉数据,级联上下级按数组顺序排列。
select_id为对应的select的id。
value为默认选项值。
options为数据json数组。其中:id为option的value(后台数据id,数字字典值);pid为父id,即级联的上级id,当上级id发生变化,下级自动随着变化;name为选项名。

数据绑定方法:t.moreSelect(data);,参数是具体数据。

顶部工具栏

顶部工具栏

顶部工具栏点击后,会自动切换对应的界面。顶部工具栏每个按钮a的href="#tab1"中href指向的便是界面id,每个界面是一个.tab, 当前界面是.tab-active。每个tab对应一个url地址,当点击相关tab后会调转到相应的url地址上。

    <div class="nav bg_blue white">
        <div class="left">
            <a href="index.html" class="back link nav-btn">
                <i class="icon ion-chevron-left"></i>
            </a>
        </div>
        <div class="center" style="left:-10px">订单</div>
        <div class="right">
        </div>
    </div>
    <div class="toolbarup">
        <a class="tab-link-up tab-link-active col-50" href="#tab21">
            <span>未完成</span>
        </a>
        <span class="y-line">|</span>
        <a class="tab-link-up col-50" href="#tab22">
            <span>已完成订单</span>
        </a>
    </div>
    <div class="content">
        <div class="head-pull"></div>
        <div class="head-pull"></div>
        <div class="split-range"></div>
        <div class="toolbarup-content">
            <div class="tab-active2" id="tab21" url="_order_ing.html"></div>
            <div class="tab" id="tab22" url="_order_ed.html" ></div>
        </div>
    </div>

    <script>
        if(request.tabup){
            t(".toolbarup").tabUpClean().tabInitUp(request.tabup); //清楚缓存后重新初始化tab
        }else{
            t(".toolbarup").tabInitUp("tab21");
        }
    </script>

顶部工具栏初始化:t(".toolbarup").tabInitUp("tab21");。初始化参数,即设置当前tab页面。 顶部工具栏删除缓存:t(".toolbar").tabClean();

下拉刷新

下拉刷新

下拉刷新方法:t.downPull(function(){ ... })。定义这个方法的界面即可实现下拉刷新功能,参数function为下拉触发事件,可以结合ajax请求服务器,把服务器数据渲染到相关位置。

例如:

    <ul>
        <li><a href="javascript:;" class="link_item">
            <div class="item">
                <!--<div class="item_left"></div>-->
                <div class="item_center">
                    <div class="item-content">tuiFramework</div>
                    <!--<div class="item_after"></div>-->
                </div>
            </div>
        </a></li>
        <li><a href="javascript:;" class="link_item">
            <div class="item">
                <!--<div class="item_left"></div>-->
                <div class="item_center item_icon_right">
                    <div class="item-content">tuiFramework</div>
                    <!--<div class="item_after"></div>-->
                </div>
            </div>
        </a></li>
    </ul>
    <script>
        t.downPull(function () {
            $(".current ul").prepend($(".current li").clone());
        });
    </script>

自动刷新

自动刷新

自动刷新方法:t.upPull(function(){ ... })。定义这个方法的界面即可实现自动刷新功能,参数function,当用户即将滑动到页面底部时会触发该事件,可以结合ajax请求服务器,把服务器数据渲染到相关位置。

例如:

    <ul>
        <li><a href="javascript:;" class="link_item">
            <div class="item">
                <!--<div class="item_left"></div>-->
                <div class="item_center">
                    <div class="item-content">tuiFramework</div>
                    <!--<div class="item_after"></div>-->
                </div>
            </div>
        </a></li>
        <li><a href="javascript:;" class="link_item">
            <div class="item">
                <!--<div class="item_left"></div>-->
                <div class="item_center">
                    <div class="item-content">tuiFramework</div>
                    <!--<div class="item_after"></div>-->
                </div>
            </div>
        </a></li>
        <li><a href="javascript:;" class="link_item">
            <div class="item">
                <!--<div class="item_left"></div>-->
                <div class="item_center">
                    <div class="item-content">tuiFramework</div>
                    <!--<div class="item_after"></div>-->
                </div>
            </div>
        </a></li>
    </ul>
    
    <div class="bottom-pull middle">
        <div class="pull-text">上拉刷新</div>
    </div>
        
    <script>
        t.upPull(function () {
            $(".pull-text").text("已无数据!");
        });
    </script>

图文

图文

.page-content-block中的p为内容块,内容为文字和图片。

例如:

    <div class="page-content-block">
        <p>
            fdsafdsassssssssssssssssssfffffffffffffffffffffffffffffffffffffdssssssssssssssssssssfddfdfd
            ddddddddddddddddddweeeeeerrrrrrrrrrrrrreeeeeeeeeeeeeeewtfffffffffdddddddddddddssssssssssssss
        </p>
    </div>
    <div class="page-content-block">
        <p>
            <img src="imgs/1.jpg" alt="">
        </p>
        <p>
            fdsafdsassssssssssssssssssfffffffffffffffffffffffffffffffffffffdssssssssssssssssssssfddfdfd
            ddddddddddddddddddweeeeeerrrrrrrrrrrrrreeeeeeeeeeeeeeewtfffffffffdddddddddddddssssssssssssss
        </p>
        <p>
            <img src="imgs/2.jpg" alt="">
        </p>
        <p>
            fdsafdsassssssssssssssssssfffffffffffffffffffffffffffffffffffffdssssssssssssssssssssfddfdfd
            ddddddddddddddddddweeeeeerrrrrrrrrrrrrreeeeeeeeeeeeeeewtfffffffffdddddddddddddssssssssssssss
        </p>
    </div>

加载图标

加载图标

加载图标方法:t.preload(style, time)
参数1:style为风格,值为”write”,”black”。
参数2:time为加载图标显示时间,单位毫秒。

例如:

    t.preload("write", 3000);

白色:

黑色:

九宫格

九宫格

九宫格为三行.row三列.col-30

例如:

    <div class="row">
        <div class="col-30">
            <a href="form.html" class="route btn9">
                <i class="icon ion-home"></i>
                <span>form</span>
            </a>
        </div>
        <div class="col-30">
            <a href="botton.html" class="route btn9">
                <i class="icon ion-home"></i>
                <span>button</span>
            </a>
        </div>
        <div class="col-30">
            <a href="map.html" class="route btn9">
                <i class="icon ion-home"></i>
                <span>map</span>
            </a>
        </div>
    </div>
    <div class="row">
        <div class="col-30">
            <a href="action.html" class="route btn9">
                <i class="icon ion-home"></i>
                <span>action</span>
            </a>
        </div>
        <div class="col-30">
            <a href="actionSheet.html" class="route btn9">
                <i class="icon ion-home"></i>
                <span>actionSheet</span>
            </a>
        </div>
        <div class="col-30">
            <a href="" id="notice" class="btn9">
                <i class="icon ion-home"></i>
                <span>notice</span>
            </a>
        </div>
    </div>
    <div class="row">
        <div class="col-30">
            <a href="icons.html" class="route btn9">
                <i class="icon ion-home"></i>
                <span>icons</span>
            </a>
        </div>
        <div class="col-30">
            <a href="list.html" class="route btn9">
                <i class="icon ion-home"></i>
                <span>list</span>
            </a>
        </div>
        <div class="col-30">
            <a href="slide.html" class="route btn9">
                <i class="icon ion-home"></i>
                <span>slide</span>
            </a>
        </div>
    </div>

聊天

聊天

聊天板块.message,接收的信息板块.received,发送的信息的板块.send,时间板块.message-date

例如:

<div class="content">
    <div class="head-pull"></div>
    <div class="message">
        <div class="received">
            <img class="msg-image" src="imgs/t1.jpeg">
            <div class="msg-content">
	            <div class="msg-name">fdffdfs</div>
	            <div class="msg-text">fdsafsadsafdsa</div>
            </div>
        </div>
        <div class="message-date">2016-1-12</div>
        <div class="send">
            <div class="msg-content">
	            <div class="msg-name">fdffdfs</div>
	            <div class="msg-text">嘟嘟嘟嘟嘟嘟</div>
            </div>
            <img class="msg-image" src="imgs/t1.jpeg">
        </div>
        <div class="send">
            <div class="msg-content">
	            <div class="msg-name">fdffdfs</div>
	            <div class="msg-text">ni shi zhan xian ne me ? wei shen me?</div>
            </div>
            <img class="msg-image" src="imgs/t1.jpeg">
        </div>
        <div class="received">
            <img class="msg-image" src="imgs/t1.jpeg">
            <div class="msg-content">
	            <div class="msg-name">fdffdfs</div>
	            <div class="msg-text">fdsafsadsafdsa</div>
            </div>
        </div>
        <div class="send">
            <div class="msg-content">
	            <div class="msg-name">斯达哈哈</div>
	            <div class="msg-text">i belonges to you</div>
            </div>
            <img class="msg-image" src="imgs/t1.jpeg">
        </div>
        <div class="send">
            <div class="msg-content">
	            <div class="msg-name">掌扇</div>
	            <div class="msg-text">哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈啊</div>
            </div>
            <img class="msg-image" src="imgs/t1.jpeg">
        </div>
    </div>
    <div class="page-content-bottom"></div>
</div>
<div class="toolbar">
    <a href="" class="msg-btn middle"><i class="icon ion-ios-camera"></i></a>
    <textarea class="send_content" name="" placeholder="Message"></textarea>
    <a href="javascript:;" class="msg-btn send-btn middle">发送</a>
</div>
<script>
    var data = {
        name: "wode", image: "imgs/t1.jpeg",  //设置发送信息者的名字和头像
        contents: [{
            send: {
                message: "接收数据,发的范德萨微软为其广泛的就送给"
            },
            receive: {
                name: "wode",
                message: "发送数据,发的范德萨微软为其广泛的就送给",
                image: "imgs/t1.jpeg"
            },
            date: '2016-02-13'
        }]
    }
    var mes = new t.message(data);
    mes.onSend = function (content) {
        //alert(content);//获取信息时触发
    }
</script>

方法:

方法名称 参数 返回值 描述
new t.message(data) data要初始化的数据数组; 用于初始化聊天记录
send(content) content发送的内容string 当点击发送按钮后发送信息,渲染到聊天记录中。
receive(data) data接收的数据 当服务器发送数据过来后,可以通过该方法渲染到接收数据的聊天记录中。
date(date) date时间 把数据交互的时间渲染到聊天记录中。

事件:

事件名称 参数 描述
onSend(message) 消息string 当点击发送按钮后触发,可以在这里向服务器发送消息数据。
onReceive(data) data同receive方法 当接收信息渲染到聊天记录中时触发

百度地图

百度地图

demo中提供百度地图的兼容使用示例,可以下载demo查看。

图表

图表

图表采用echarts,demo中提供图表的饼图、折线图、柱状图的兼容使用示例,可以下载demo查看。

图标

图标

图标采用ionicons,demo中提供图标的兼容使用示例,可以下载demo查看。图标的大小由font字体大小控制,颜色由color设置。

用户

用户

    <div class="page-content">
         <ul>
             <li><a href="javascript:;" class="link_item">
                 <div class="item">
                     <div class="item_left">
                         <img style="width:80px;height:80px;" src="imgs/t1.jpeg">
                     </div>
                     <div class="item_img_center">
                         <div class="item-content">
 	                        	<div class="item-content-text">
 	                        		<div class="item-content-title"><span class="blue">我的车辆</span>&nbsp;&nbsp;<span class="orange">费用200元</span></div>
 	                        		<div class="item-content-sub-title"><span style="font-size: 14px;font-weight: 100;">载重量:15吨 | 超出:16元/公里</span></div>
 	                        </div>
                         </div>
                     </div>
                 </div>
             </a></li>
         </ul>
    </div>
    <div class="split-range"></div>
 	<div class="page-content bg_white">
 		<ul class="block-btn">
 			<li class="width-50">
 				<a href="javascript:;" class="middle middle_vertical">
 					<div class="block-icon bg_orange2"><i class="icon ion-ios-paper white middle" style="font-size: 25px;padding-top: 5px;"></i></div>
 					<div class="block-title">
 						<span>我的订单</span>
 						<p class="orange2">120</p>
 					</div>
 				</a>
 			</li>
 			<li class="width-50">
 				<a href="javascript:;" class="middle middle_vertical">
 					<div class="block-icon bg_red2"><i class="icon ion-ios-people white middle" style="font-size: 25px;padding-top: 5px;"></i></div>
 					<div class="block-title">
 						<span>我的账户</span>
 						<p class="red">120</p>
 					</div>
 				</a>
 			</li>
 		</ul>
 		<ul class="block-btn">
 			<li class="width-50">
 				<a href="javascript:;" class="middle middle_vertical">
 					<div class="block-icon bg_violet"><i class="icon ion-ios-recording white middle" style="font-size: 25px;padding-top: 5px;"></i></div>
 					<div class="block-title">
 						<span>我的评价</span>
 						<p class="radio_badge">120</p>
 					</div>
 				</a>
 			</li>
 			<li class="width-50">
 				<a href="javascript:;" class="middle middle_vertical">
 					<div class="block-icon bg_blue2"><i class="icon ion-android-map white middle" style="font-size: 25px;padding-top: 5px;"></i></div>
 					<div class="block-title">
 						<span>我银行卡</span>
 						<p class="blue">120</p>
 					</div>
 				</a>
 			</li>
 		</ul>
 	</div>
    <div class="split-range"></div>
 	<div class="page-content">
 		<ul>
 			<li>
 				<a href="javascript:;" class="link_item">
 					<div class="item">
 						<div class="item_center item_icon_right">
 							<div class="item-content">操作指南</div>
 						</div>
 					</div>
 				</a>
 			</li>
 			<li>
 				<a href="javascript:;" class="link_item">
 					<div class="item">
 						<div class="item_center item_icon_right">
 							<div class="item-content">服务标准</div>
 						</div>
 					</div>
 				</a>
 			</li>
 			<li>
 				<a href="javascript:;" class="link_item">
 					<div class="item">
 						<div class="item_center item_icon_right">
 							<div class="item-content">常见问题</div>
 						</div>
 					</div>
 				</a>
 			</li>
 			<li>
 				<a href="javascript:;" class="link_item">
 					<div class="item">
 						<div class="item_center item_icon_right">
 							<div class="item-content">收费标准</div>
 						</div>
 					</div>
 				</a>
 			</li>
 			<li>
 				<a href="javascript:;" class="link_item">
 					<div class="item">
 						<div class="item_center item_icon_right">
 							<div class="item-content">本月榜单</div>
 						</div>
 					</div>
 				</a>
 			</li>
 			<li>
 				<a href="javascript:;" class="link_item">
 					<div class="item">
 						<div class="item_center item_icon_right">
 							<div class="item-content">系统设置</div>
 						</div>
 					</div>
 				</a>
 			</li>
 		</ul>
 	</div>

缓存

缓存

缓存框架为持久化缓存。从功能上分为数据缓存和页面缓存。 1.缓存数据:通过t.cache.data类来对缓存数据进行操作。此类方法分为set设置 get获取 del删除。

    t.cache.data.set("data_id", {id: 11});  //设置缓存数据
    //获取缓存数据
    t.cache.data.get("data_id", function(data){
        if(data && data.result){
            //data.result为缓存数据,即id为data.result.id
        }
    });
    //删除缓存数据
    t.cache.data.del("data_id");

2.缓存页面:通过t.cache.page类,对当前页面进行缓存。 设置页面缓存

    t.onJump = function(){
        t.cache.page.set();  //当页面跳转到下一页前缓存页面。
    }

    //获取页面缓存,页面缓存即用即清理。
    t.cache.page.get(function(){
        //这里为获取缓存并渲染完毕后触发
    });

过滤器

过滤器

过滤器概念与其他语言相似。 先把filter.js放在与tui.js同级目录下,filter.js说明如下。

    window.filters = function (){
    	return [{after_filter: function(){
    		t.parameter("form", t("form").serialize());
    		return true;
    	}, only: ["chafeng_new.html"]}];
    	/**
    	 * 过滤器配置,
    	 */
    	/*return [{before_filter: function(){
    	        	alert("没有权限");
    	        	return false;
    	        }, only: ["index.html"]}];       //过滤器before_filter, after_filter, only: ["index.html","about.html"]只过滤某些文件,except: ["index.html","about.html"]排除某些文件all: true过滤所有,过滤文件夹only_dir: [], except_dir: []
    	*/
    }

页面临时缓存

页面临时缓存

页面临时缓存和缓存不同在于,页面临时缓存完全存储在内存中。但不是持久化保存,是通过手动设置和执行缓存。注意页面临时缓存使用一次后自动清空。 1.设置:通过t.pageTempCache.set来设置或更新页面缓存。

	function pageOnJump(){
		t.pageTempCache.set();//当页面跳转前设置临时缓存当前页面。

	}

2.缓存渲染:通过t.pageTempCache.get(fn),把当前已经缓存的当前页面渲染到当前位置,参数fn为当缓存渲染完毕后触发事件。

	t.pageTempCache.get(function(){
		setvalue();
	});

api

事件

方法名称 参数 返回 描述
t.eventAdd(action, onevent) action,页面加载动作:beforePre上一页加载之前触发,afterPre上一页之后,beforeNext下一页之前,afterNext下一页之后。 onevent,触发事件。 增加全局事件
t.fn.touchAction(action, startListen, movingListen, endListen) action 触摸动作,String类型,值包括:click,left,right,up,down;依次为单击、向左滑动、向右滑动、向上滑动、向下滑动; startListen 触摸开始时触发事件,格式function(e){},参数e为json,键x,y movingListen 触摸移动时触发的事件,click时不触发,格式function(3){},参数e为json,键x,y endListen 触摸结束时触发的事件,格式function(e){} ,参数e为json,键startX,startY,endX,endY,startTime,endTime,distanceX,distanceY,distanceTime,action 返回当前对象 触摸动作处理事件
t.fn.touchLong(fn) 触发事件 返回当前对象 长按事件

preload加载过程动画

方法名称 参数 返回 描述
open(style) style:显示风格,取值:"write"和"black" 显示加载中动画
close() 关闭加载中动画
t.preload(style, time) style:显示风格,取值:"write"和"black";time:加载自动关闭时间 加载动画演示样式

注册

方法名称 参数 返回 描述
t.radioRegist() 注册单选功能,默认自动注册,如果动态增加单选,请手动注册,否则单选功能失效。
t.checkRegist() 注册多选功能,默认自动注册,如果动态增加,请手动注册,否则多选功能失效。
t.formRegist() 动态注册form表单中的file,默认自动注册,如果动态增加,请手动注册,否则file功能失效。
t.routeRegist() 路由注册,默认自动注册,如果动态增加,请手动注册,否则路由功能失效。
t.fn.routeClean() 注销某个区域路由。
t.regist() 注册所有功能

表单转换成json数据

方法名称 参数 返回 描述
t.fn.formToJSON() JSON form表单转换称json数据,保证name属性有值。
t.fn.bindform(data) data 服务器返回的json数据自动绑定到form表单,返回json名必须和form的name名一样。 绑定表单数据

服务器数据交互

方法名称 参数 返回 描述
t.sendGet(url, data, fn, cache) url 要加载的html文件;data 发送数据;fn 回调地址;cache {open: true, timeout: 1} open开启缓存,timeout缓存时间单位天; 发送请求,用于向服务器发送get请求
t.sendPost(url, data, fn, cache) url 要加载的html文件;data 发送数据;fn 回调地址;cache {open: true, timeout: 1} open开启缓存,timeout缓存时间单位天; 发送请求,用于向服务器发送post请求

常用方法

方法名称 参数 返回 描述
t.system(str) str 字符串 返回js对象或表达式值 字符串转换成js表达式或对象执行。
t.include(path) path js文件地址 载入js文件。
t.timeStamp() 当前时间戳 生成时间戳。
t.jsonToparams(j) j:json数据 字符串 把json对象转换成网址参数
t.serializeToJson(str) str:get参数字符串; 转换称的json数据 get参数序列转换成json

session/cookie

方法名称 参数 返回 描述
t.session(name, value) name 键;value 值,如果值不存在则取值,如果值为null则清空session; {} session用于临时缓存数据
t.cookie(key, value, options) key 键;value 值,options:cookie设置,如{expires: 100}过期时间。有value则设置,无value则取值。 value cookie设置和获取
t.removeCookie(key, options) key 键;options:cookie设置。 删除cookie

cache缓存

方法名称 参数 返回 描述
page.set() 设置当前页面缓存
page.get() 获取当前页面缓存
data.set(dataid, dataval) dataid 内容标识,必须保证唯一,否则自动覆盖。 dataval 要缓存的数据。 设置缓存
data.get(dataid, fn) dataid 内容标识 fn 获取完缓存后触发事件function(data){data.result}, result为缓存结构。 获取缓存数据
data.del(dataid) dataid 内容标识 删除缓存数据
open() 打开数据库
getObjectStore(store_name, mode) store_name:store名称; mode:读写"readonly" or "readwrite"; store 获取store
clearObjectStore(store_name) store_name:store名称; 删除store
put(data) data json类型,必须存在id,并且id不能重复。 返回data 如果没有数据增加,有则改。
del(id) id 要删除数据的标识 删除数据

gc

gc内存自动回收机制,针对页面生存周期而设定的gc内存回收机制,即我们可以把页面内存活的变量、对象、定时器放在gc中,当生存周期过后会自动清除gc内容。 所以使用时要注意,如果不想清除的对象不要放在gc中。 gc使用方法很简单,对于变量和对象只需要这样gc.name="tom"gc.obj = obj.new,即可实现对变量和对象的使用和清除。 对于计时器的声明和变量对象不同需要如下方式:

	gc.interval.daojishi_interval = setInterval(function(){
		if(miao>0){
			miao = miao - 1;
			t("#_login_daojishi").text(" | "+miao+"秒重新发");
		}else{
			clearInterval(gc.interval.daojishi_interval);
			t("#_login_daojishi").text("");
			t(_this).show();
		}
	}, 1000);

模板引擎

数据交互

模板引擎采用Handlebars,github地址:* Handlebars.js 1.内部模板:采用script标签作为模板标签,script类型为type="text/x-handlebars-template"。使用Handlebars.compile(t("#template").html())(data)进行渲染。 2.外部模板:调用外部的html文件,t(".current ul").renderAppend("template_render.html", data2);采用renderAppend直接渲染,第二个参数为数据。

示例:

 
<script id="template" type="text/x-handlebars-template">
	{{#boys}}
	<li>
		<a href="javascript:;" class="link_item">
			<div class="item item-trim">
				<div class="item_left">
					<div class="item-icon-l-b bg_blue">
						<i class="icon ion-android-apps"></i>
					</div>
				</div>
				<div class="item_center">
					<div class="item-content">{{name}}</div>
				</div>
			</div>
		</a>
	</li>
	{{/boys}}
</script>
<script>
	var data = {boys: [{name: "内部模板渲染"},{name: "内部模板渲染"},{name: "内部模板渲染"},{name: "内部模板渲染"},{name: "内部模板渲染"}]};
    var data2 = {boys: [{name: "外部模板渲染"},{name: "外部模板渲染"},{name: "外部模板渲染"},{name: "外部模板渲染"},{name: "外部模板渲染"}]};
	function update(){
		t(".current ul").append(Handlebars.compile(t("#template").html())(data));
	}
    function update2(){
        t(".current ul").renderAppend("template_render.html", data2);
    }
</script>

3.模板引擎插件helper,为Handlebars做逻辑扩充。github地址:* Handlebars-Helpers 具体方法:

 
<script>
 	{{#is x}} ... {{else}} ... {{/is}}
 	{{#is x "not" y}} ... {{else}} ... {{/is}}
	{{#is 5 ">=" 2}} ... {{else}} ... {{/is}}
	// Loose equality checking
	{{#is x y}} ... {{else}} ... {{/is}}
	{{#is x "==" y}} ... {{else}} ... {{/is}}
	
	{{#is x "!=" y}} ... {{else}} ... {{/is}}
	{{#is x "not" y}} ... {{else}} ... {{/is}}
	
	// Strict equality checking
	{{#is x "===" y}} ... {{else}} ... {{/is}}
	{{#is x "!==" y}} ... {{else}} ... {{/is}}
	
	// Greater/Less Than
	{{#is x ">" y}} ... {{else}} ... {{/is}}
	{{#is x ">=" y}} ... {{else}} ... {{/is}}
	
	{{#is x "<" y}} ... {{else}} ... {{/is}}
	{{#is x "<=" y}} ... {{else}} ... {{/is}}
	
	// In comma separated list, or array
	{{#is x "in" "foo,bar"}} ... {{else}} ... {{/is}}
	{{#is x "in" anArray}} ... {{else}} ... {{/is}}
</script>

4.建议使用方式: (1)项目根目录:template.html 保存所有模板文件。 (2)js目录下:script.js 放置所有服务器请求,同时进行渲染。 也可以根据对象创建目录,分开保存到相应目录中。

配置

配置

系统设置,可以通过t.setting(params)进行配置。例如

    t.setting({autoload: false});

配置参数:

参数名称 类型 默认 描述
root string index.html 首页地址,用于自动返回功能时,最后返回地址。
cache boolean true 预留字段
autoload boolean false 自动预加载开关,如开启此功能,会预先加载下一页的内容,默认为true开启自动加载功能。`此功能已经弃用`
async boolean false 异步加载开关,如开启此功能,会异步加载调用或加载内容,默认为false关闭。
env boolean true 是否开启调试环境
preload boolean true 页面间过度动画开关,如开启此功能,当访问新页面或返回原页面的时候,如果有网络延迟,会出现等待动画,默认开启。
animation boolean false 页面动画效果开关,安卓手机一般为关闭false,ios为true。以前的安卓手机会有卡顿现象,根据具体情况选择开关。
rightTouch boolean false 右滑动返回上一页开关,注意如开启此功能,要保证页面中没有相关右滑动的ui,否则会有冲突,默认关闭。

Hbuilder中配置动画开关实例

	document.addEventListener("plusready", function() {
	    //判断如果是ios系统,开启页面滑动动画。
		if(plus.os.name.toLocaleLowerCase() == "ios"){
			t.setting({preload: true, animation: true});
		}
	});

风格配置: 风格参数:

参数名称 类型 默认 描述
navbgColor string #2196f3 顶部背景颜色
radioActiveColor string #333 单选背景颜色
checkboxActiveColor string #333 多选背景颜色
tabActiveColor string #2196f3 顶部和底部导航背景颜色

风格初始化:

    t.styles = {
        navbgColor: "#2196f3",
        radioActiveColor: "#333",
        checkboxActiveColor: "#333",
        tabActiveColor: "#2196f3"
    }

提示框

提示

提示框:t.alert(content, fn, style),content提示内容,fn为alert点击后触发事件。style为空的时候是错误提示,当style为success的时候为正确提示。

    <a href="javascript:;" class="btn bg_teal alert">alert</a>
    <script>
        t(".alert").click(function () {
            t.alert("you want use?", function(){
                t.toNextPage("list.html");
            });
            return false;
        });
    </script>

信息提示框:t.confirm(content, function),content信息内容,function点击按钮的事件,其中obj.action为按钮的名称,用来判断用户点击了哪个按钮。

    <a href="" class="btn bg_teal confirm">confirm</a>
    <script>
        t(".confirm").click(function () {
            t.confirm("you want use?", function(obj){
                t.alert("btn name", obj.action);
            });
            return false;
        });
    </script>

自定义提示框方法:t.popup(popup_id, function(obj){})
参数1:要弹出的div的id。
参数2:处理弹出后点击按钮的事件,其中obj.action为按钮的名称,用来判断用户点击了哪个按钮。

    <a href="" class="btn bg_teal prompt">prompt</a>
	<div id="popup3" class="popup-by-input">
		<div class="popup-msg">
			<div class="popup-title-hr">
				<a href="javascript:;"><i class="ion-close"></i></a>
				<span style="margin-left: 10px;">
					请输入账号密码
				</span>
			</div>
			<div class="popup-content">
				<div class="input-field">
					<input type="text" placeholder="username">
				</div>
				<div class="input-field">
					<input type="password" placeholder="password">
				</div>
			</div>
		</div>
		<div class="popup-btn">
			<a href="javascript:;" class="btn btn-sm bg_blue">确定</a>
		</div>
	</div>
    <script>
        t(".prompt").click(function () {
            t("#popup3").popup(function (obj) {
                if (obj.action == "确定") {
    				return true; //返回真,关闭提示框。

                } else if (obj.action == "") {
    				return false; //返回假,不关闭提示框。

                }
            });
        });
    </script>

底部工具栏

底部工具栏

底部工具栏点击后,会自动切换对应的界面。底部工具栏每个按钮a的href="#tab1"中href指向的便是界面id,每个界面是一个.tab, 当前界面是.tab-active。每个tab对应一个url地址,当点击相关tab后会调转到相应的url地址上。

    <div class="tab-active" id="tab1" url="form.html"></div>
    <div class="tab" id="tab2" url="form.html"></div>
    <div class="tab" id="tab3" url="botton.html"></div>
    <div class="tab" id="tab4" url="list.html"></div>
    <div class="toolbar">
        <a class="tab-link tab-link-active col-25" href="#tab1">
            <i class="icon ion-home"></i>
            <span class="">首页</span>
        </a>
        <a class="tab-link col-25" href="#tab2">
            <i class="icon ion-home">
                <span class="badge bg_red">5</span>
            </i>
            <span class="">订单</span>
        </a>
        <a class="tab-link col-25" href="#tab3">
            <i class="icon ion-home"></i>
            <span class="">周边</span>
        </a>
        <a class="tab-link col-25" href="#tab4">
            <i class="icon ion-home"></i>
            <span class="">我的</span>
        </a>
    </div>
    <script>
        if(request.tab){
            t(".toolbar").tabClean().tabInit(request.tab); //清楚缓存后重新初始化tab
        }else{
            t(".toolbar").tabInit("tab1");
        }
    </script>

底部工具栏初始化:t(".toolbar").tabInit("tab1");。初始化参数,即设置当前tab页面。 底部工具栏删除缓存:t(".toolbar").tabClean();

检索

检索

检索html结构为:整体.search,搜索框.search-action,搜索框内切换内容.search-body。 检索js初始化:t.searchTab(fn);,参数fn为筛选条件被点击时触发,参数结构:elm当前点击节点,val当前值,t.searchVals当前选中值。

<script>
    t(function() {
        t.searchTab(function(o) {
            // console.log(o.elm);
            // console.log(o.val);
            // t.get(url, t.searchVals, function(){});
            // 多选
            console.log(o);
            console.log(t(o.elm).text());
            t.searchClose();
        });
    });
</script>
<div class="search">
    <div class="search-action">
        <a class="search-btn" href="#search-tab1">单选 <i class="icon ion-arrow-down-b"></i></a>
        <a class="search-btn" href="#search-tab2">单选 <i class="icon ion-arrow-down-b"></i></a>
        <a class="search-btn" href="#search-tab3">多选 <i class="icon ion-arrow-down-b"></i></a>
        <a class="search-btn" href="#search-tab2">单选 <i class="icon ion-arrow-down-b"></i></a>
    </div>
    <div class="search-body">
        <div class="search-content" id="search-tab1">
            <ul>
                <li class="link_item radio">
                    <div class="item">
                        <div class="item_center">
                            <div class="item-input col-90">
                                单选样式1
                            </div>
                            <div class="middle col-10">
                                <input type="radio" value="1" id="radio1" name="radio1" class="rd">
                                <label for="radio1">
            <i class="icon ion-android-done"></i>
        </label>
                            </div>
                        </div>
                    </div>
                </li>
                <li class="link_item radio">
                    <div class="item">
                        <div class="item_center">
                            <div class="item-input col-90">
                                单选样式2
                            </div>
                            <div class="middle col-10">
                                <input type="radio" value="2" id="radio2" name="radio1" class="rd">
                                <label for="radio1">
            <i class="icon ion-android-done"></i>
        </label>
                            </div>
                        </div>
                    </div>
                </li>
                <li class="link_item radio">
                    <div class="item">
                        <div class="item_center">
                            <div class="item-input col-90">
                                单选样式3
                            </div>
                            <div class="middle col-10">
                                <input type="radio" value="3" id="radio3" name="radio1" class="rd">
                                <label for="radio1">
            <i class="icon ion-android-done"></i>
        </label>
                            </div>
                        </div>
                    </div>
                </li>
            </ul>
        </div>
        <div class="search-content" id="search-tab2">
            <ul>
                <li class="link_item radio">
                    <div class="item">
                        <div class="item_center">
                            <div class="item-input col-90">
                                单选样式4
                            </div>
                            <div class="middle col-10">
                                <input type="radio" value="1" id="radio4" name="radio2" class="rd" checked="checked">
                                <label for="radio4">
            <i class="icon ion-android-done"></i>
        </label>
                            </div>
                        </div>
                    </div>
                </li>
                <li class="link_item radio">
                    <div class="item">
                        <div class="item_center">
                            <div class="item-input col-90">
                                单选样式5
                            </div>
                            <div class="middle col-10">
                                <input type="radio" value="2" id="radio5" name="radio2" class="rd">
                                <label for="radio1">
            <i class="icon ion-android-done"></i>
        </label>
                            </div>
                        </div>
                    </div>
                </li>
                <li class="link_item radio">
                    <div class="item">
                        <div class="item_center">
                            <div class="item-input col-90">
                                单选样式6
                            </div>
                            <div class="middle col-10">
                                <input type="radio" value="3" id="radio6" name="radio2" class="rd">
                                <label for="radio6">
            <i class="icon ion-android-done"></i>
        </label>
                            </div>
                        </div>
                    </div>
                </li>
            </ul>
        </div>

        <div class="search-content" id="search-tab3">
            <ul>
                <li class="link_item2 checkbox">
                    <div class="item col-50">
                        <div class="item_left">
                            <input id="checkbox31" name="duoxuan3" type="checkbox" class="ck" value="1">
                            <label for="checkbox31" class="lb-ck"></label>
                        </div>
                        <div class="item_center">
                            <div class="item-input">
                                多选样式1
                            </div>
                            <!--<div class="item_after"></div>-->
                        </div>
                    </div>
                    <div class="item col-50">
                        <div class="item_left">
                            <input id="checkbox32" name="duoxuan3" type="checkbox" class="ck" value="2">
                            <label for="checkbox32" class="lb-ck"></label>
                        </div>
                        <div class="item_center">
                            <div class="item-input">
                                多选样式2
                            </div>
                            <!--<div class="item_after"></div>-->
                        </div>
                    </div>
                </li>
                <li class="link_item2 checkbox">
                    <div class="item col-50">
                        <div class="item_left">
                            <input id="checkbox33" name="duoxuan3" type="checkbox" class="ck" value="3">
                            <label for="checkbox33" class="lb-ck"></label>
                        </div>
                        <div class="item_center">
                            <div class="item-input">
                                多选样式3
                            </div>
                            <!--<div class="item_after"></div>-->
                        </div>
                    </div>
                    <div class="item col-50">
                        <div class="item_left">
                            <input id="checkbox34" name="duoxuan3" type="checkbox" class="ck" value="4">
                            <label for="checkbox34" class="lb-ck"></label>
                        </div>
                        <div class="item_center">
                            <div class="item-input">
                                多选样式4
                            </div>
                            <!--<div class="item_after"></div>-->
                        </div>
                    </div>
                </li>
            </ul>
            <div class="page-content">
                <div class="row" style="padding-bottom: 0px;">
                    <div class="col-50">
                        <a href="" class="btn_x bg_white btn_x_bd_t_8d black">按钮</a>
                    </div>
                    <div class="col-50">
                        <a href="" class="btn_x bd_8d bg_red">按钮</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

数据交互

数据交互

1.send({params}):向服务器发送ajax请求,需要服务器开启跨域权限。 参数params:

参数 类型 默认值 描述
url string 不可为空 请求地址
type string get 请求类型,取值范围:get/post/put/patch/delete
data json {} 请求数据
cache boolean false 是否缓存
encode boolean false 是否encode
success function 成功回调函数
error function 失败回调函数

示例:

t.send({
    url: serverurl + "/comments/" + id,
    type: "delete",
    data: {},
    success: function(data) {
        if(data.state == "success") {
            t(obj).parents("li").remove();
        } else {
            t.alert(data.message);
        }
    }
});