Arttemplate引擎模版实例应用

Arttemplate是新一代 javascript 模板引擎,由编写模版和渲染模版组成。
实际的需求是一个天气app中,从接口中取出所需要的数据进行重新组装,循环遍历出来显示在一个html中,从而获得数据的快速更新和展示。

1.从数据接口中接受数据

url = "https://api.caiyunapp.com/v2/Y2FpeXVuIGFwaSB3ZWI/" + jw + "/forecast.json?callback=showLocation";
        $.jsonp({
            url: url,
            callback: 'showLocation',
            success: function(result) {
                $(".wea-detailbox .wea-detail").text(result.result.hourly.description);
                var newData = createDailyData(result);
                if("temperature" === id) {
                    highChartModule.weather(result)
                    daily(newData);
                    //接受数据
                    detail24(result);
                }else if("pm25" === id) {
                    highChartModule.pm25(result);               

2.考查获取的数据结构

本次获取的天气数据来源于彩云天气(http://wiki.swarma.net/index.php/%E5%BD%A9%E4%BA%91%E5%A4%A9%E6%B0%94API/v2)在其提供的API文档中可以看到JSON数据。

{
    "status":"ok",
    "lang":"zh_CN", //目前只支持简体中文(zh_CN、zh_SG)、繁体中文(zh_TW、zh_HK),英语(en_US、en_GB)在测试中
    "server_time":1443418212,
    "tzshift":28800, //时区的偏移秒数,如东八区就是 28800 秒,使用秒是为了支持像尼泊尔这样的差 5 小时 45 分钟的地区,它们有非整齐的偏移量
    "location":[
        25.1552, //纬度
        121.6544 //经度
    ],
    "unit":"metric", //目前只支持米制(metric)和科学计量法(SI),英制还有待开发
    "result":{
        "status":"ok",
        "hourly":{ //小时级预报,涵盖从当前开始的未来 48 小时
            "status":"ok",
            "pm25":[ //pm25
                {
                    "value":8.0,
                    "datetime":"2015-09-28 13:00"
                },
                {
                    "value":8.0,
                    "datetime":"2015-09-28 14:00"
                },
                {
                    "value":7.0,
                    "datetime":"2015-09-28 15:00"
                },

因为业务的需要,我们需要提取其中的“datetime”.”temprature.value”和”skycon.value”.

3.编辑渲染模板

定义一个函数名为detail24(data),按照(http://aui.github.io/artTemplate/)demo中顺序进行渲染。

function detail24(data){
        //需要的数据定义成对象
        var temperatures = data.result.hourly.temperature;
        var skycon = data.result.hourly.skycon;
        var newData = [];
        for(i=0,len=temperatures.length; i<10; i++) {
            //循环遍历,数据组装
            var obj = {
                'datetime':temperatures[i].datetime,
                'sky':skycon[i].value,
                'tem':temperatures[i].value
            };
            //重新组装的数据放入数组中
            newData.push(obj);
            //获取到的天气信息替换成中文
            obj.sky = skycons[obj.sky];
        }           
        var list = {list:newData};
        console.log(JSON.stringify(list));
        var html = template("daily-html-24",list);
        document.getElementById("content").innerHTML = html;    
    }

4.使用script标签存放模板

在一个html中编辑一个js模版和一个DIV,用于现实和存放需要展示出来的数据样式。注意二者的格式和位置。js模版要单独编写,不能写在一个div标签中。
DIV容器(引入样式和ID):

<div class="detail24" id="content"> 

            </div>

JS模版:

<script type="text/html" id="daily-html-24">
            <ul>
                {{each list as value i}}
                <li>
                    <div>{{value.datetime.substr(-5)}}</div>
                    <div class="real-time">{{value.sky}}</div>
                    <div><span>{{value.tem}}</span>°</div>
                </li>
                {{/each}}
            </ul>
        </script>

渲染模版中template(“daily-html-24”,list)中的ID为js模版中的ID,document.getElementById(“content”).innerHTML = html中的ID为DIV中的ID。

5.展示效果

在移动设备上运行效果
这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值