• Sencha touch 2 入门 -------- DataView 显示服务器端JSON文件数据


    今天学习了下DataView如何显示JSON文件数据,废话不多说,直接贴代码:

    首先看下文件目录:



    然后看下我们要处理的JSON文件,bookInfo.json. 

    {
    	"success":true,
    	"books":[
    		{
    			"id":"1",
    			"image_url":"resources/images/english.jpg",
    			"book_name":"考研英语",
    			"author":"孙悟空",
    			"description":"内容系统而全面,英语学习的好帮手!内容系统而全面,英语学习的好帮手!内容系统而全面,英语学习的好帮手!内容系统而全面,英语学习的好帮手!"
    		},{
    			"id":"2",
    			"image_url":"resources/images/math.jpg",
    			"book_name":"考研数学",
    			"author":"刘诗诗",
    			"description":"内容系统而全面,数学学习的好帮手,内容系统而全面,数学学习的好帮手内容系统而全面,数学学习的好帮手内容系统而全面,数学学习的好帮手"
    		}]
    }


    接着是index.html,里面有我们定义好的样式

    <!DOCTYPE HTML>
    <html manifest="" lang="en-US">
    <head>
        <meta charset="UTF-8">
        <title>myapp</title>
        <style type="text/css">
             /**
             * Example of an initial loading indicator.
             * It is recommended to keep this as minimal as possible to provide instant feedback
             * while other resources are still being loaded for the first time
             */
            html, body {
                height: 100%;
                background-color: #1985D0
            }
    
            #appLoadingIndicator {
                position: absolute;
                top: 50%;
                margin-top: -15px;
                text-align: center;
                 100%;
                height: 30px;
                -webkit-animation-name: appLoadingIndicator;
                -webkit-animation-duration: 0.5s;
                -webkit-animation-iteration-count: infinite;
                -webkit-animation-direction: linear;
            }
    
            #appLoadingIndicator > * {
                background-color: #FFFFFF;
                display: inline-block;
                height: 30px;
                -webkit-border-radius: 15px;
                margin: 0 5px;
                 30px;
                opacity: 0.8;
            }
    
            @-webkit-keyframes appLoadingIndicator{
                0% {
                    opacity: 0.8
                }
                50% {
                    opacity: 0
                }
                100% {
                    opacity: 0.8
                }
            }
            
            
            .Book-item{
                padding:10px 0 10px 68px;
                border-top:1px solid #ccc;
            }
            .Book-item h2{
                font-weight:bold;
            }
            
            .Book-item .Book_img{
                   position:absolute;
                   left:10px;
            }
            
            .Book-item .Book_img  img{
                 max-59px;
            }
            
            .Book-item .Book_info{
                 padding-left:5px;
                 font-size:12px;     
            }
            .x-item-selected{
                 background-color:blue;
                 color:white;
            }
        </style>
        <!-- The line below must be kept intact for Sencha Command to build your application -->
        <script id="microloader" type="text/javascript" src="touch/microloader/development.js"></script>
    </head>
    <body>
        <div id="appLoadingIndicator">
            <div></div>
            <div></div>
            <div></div>
        </div>
    </body>
    </html>
    


    最后就是app.js

    Ext.application({
        name: 'myapp',
        requires:['Ext.SegmentedButton','Ext.Toolbar','Ext.Panel','Ext.MessageBox','Ext.data.Store'],
        launch:function(){
    	  
    	//定义一个Model
    	 Ext.define('BookInfo',{
    		 extend:'Ext.data.Model',
    		 config:{
    		     fields:['image_url','book_name','author','description']
    		 }
    	 });
    	 
    	 //存储类(Store)封装了一个客户端缓存的模型对象,通过proxy来加载数据
    	 var bookStore=Ext.create('Ext.data.Store',{
    		 model:'BookInfo',
    		 autoLoad:true,
    		 proxy:{
    		      type:'ajax',
    		      url:'bookInfo.json',
    		      reader:{
    		           type:'json',
    		           rootProperty:'books'  //这里的 books是传递过来JSON数据的一个books节点,里面是bookInfo对象数组,如果上面还有节点,就是xxx.books
    		      }
    		 }
    	 });
    	 
    	 //定义一个tpl模板,用来在页面显示数据
    	 var bookTempalte=new Ext.XTemplate(
    	            '<tpl for=".">',
    	            '<div class="Book_img"><img src={image_url} /></div>',
    	            '<div class="Book_info">',
    	            '<h2>{book_name}</h2><br><h3>作者:{author}</h3>',
    	            '<p>{description:ellipsis(40)}</p>',
    	            '</div>',
    	            '</tpl>'
    	   );
    	 
    	 //dataview
    	 var dataview=Ext.create('Ext.DataView',{
    		 store:bookStore,
    		 itemTpl:bookTempalte,
    		 baseCls:'Book'     //指的是Book-item样式
    	 });
    	 Ext.Viewport.add(dataview);
        }
    });


    代码写完后,运行下,页面结果如下:






  • 相关阅读:
    实现简单高效的网址(文本)缩短服务
    Xsl模板应用基础(三、模板嵌套)
    Xsl模板应用基础(二、程序转换)
    Xsl模板应用基础(一、介绍)
    C#调用360杀毒软件查杀指定路径
    微信公众平台网页授权获取用户基本信息(VS.NET版)
    微信公众平台开发者模式自动回复功能与自定义菜单
    微信公众平台接入
    Git常用操作整理
    JVM知识点总结(一)——运行时数据区
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300381.html
Copyright © 2020-2023  润新知