Sencha Touch Guide

 1.一些命令

创建APP

#  Make sure the current working directory is the Sencha Touch 2 SDK 例如D:\Program Files\wamp\www\sencha-touch-2.1.1-commercial

cd /path/to/sencha-touch-2-sdk

sencha generate app MyApp /path/to/www/myapp

  

生成模型MODEL

cd /path/to/www/myapp

sencha generate model User id:int,name,email

 

更新

cd /path/to/www/myapp

sencha app upgrade /path/to/new_version_of_sdk

2.Demo实例  

 根据官方的指导手册,使用Sencha Cmd我们可以快速的创建一个App.

我们首先预览一下改进的界面:

Pic-1 首页

pic-2 音乐

pic-3 视频

pic-4 blog

pic-5 联系我们

 

1)修改 MyApp\app\view目录下的MainView.js 文件

Ext.define('MyApp.view.Main', {
    extend: 'Ext.tab.Panel',
    xtype: 'main',
    requires: [
        'Ext.TitleBar',
        'Ext.Video',
        'Ext.dataview.NestedList',
        'Ext.data.proxy.JsonP',
        'Ext.form.Panel',
        'Ext.Audio',
        'Ext.form.FieldSet',
        'Ext.field.Email'
    ],
    config: {
    	 xtype: 'tabpanel',
         fullscreen: true,
         tabBarPosition: 'bottom',

        items: [
            {
                title: '首页',
                iconCls: 'home', 
                scrollable: true,
                cls: 'home',

               

                html: [ 
                        '<p> </p>',
						'<img height=260 src="resources/icons/yu.png" />',
						'<h1>欢迎来到【鱼的记忆】</h1>',
						'<p>Hi, I\'m Tony, Welcome to my blog, may you will like it.',
						'<br/>[1]联系方式: leegtang@126.com</p>',
						'<h2>--鱼的记忆</h2>' 
                ].join("")
            },
            {
            	 title: '音乐',
                 iconCls: 'volume',  
                 displayField: 'title',
                 xtype: 'audio',
                 url  : 'resources/audio/adq.mp3'
                
            },
            {
           	 	title: '视频',
                iconCls: 'video',  
                xtype    : 'video',
                x        : 600,
                y        : 300,
                width    : 428,
                height   : 320,
                url      : "resources/audio/dby.mp4",
                posterUrl: 'resources/audio/dby.png' 
               
           },
            {
            	 xtype: 'nestedlist',
                 title: '博客',
                 iconCls: 'star',
                 displayField: 'title',

                 store: {
                     type: 'tree',

                     fields: [
                         'title', 'link', 'author', 'contentSnippet', 'content',
                         {name: 'leaf', defaultValue: true}
                     ],

                     root: {
                         leaf: false
                     },

                     proxy: {
                         type: 'jsonp',
                         url: 'blog.php',
                         //url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://feeds.feedburner.com/SenchaBlog',
                         reader: {
                             type: 'json',
                             rootProperty: 'responseData.feed.entries'
                         }
                     }
                 },
                 detailCard: {
                     xtype: 'panel',
                     scrollable: true,
                     styleHtmlContent: true
                 },

                 listeners: {
                     itemtap: function(nestedList, list, index, element, post) {
                         this.getDetailCard().setHtml(post.get('content'));
                     }
                 }
            },
            {
                title: '联系我们',
                iconCls: 'user',
                xtype: 'formpanel',
                url: 'contact.php',
                layout: 'vbox',

                items: [
                    {
                        xtype: 'fieldset',
                        title: '联系我们',
                        instructions: '(<font color="red">*</font>为必填项)',
                        height: 285,
                        items: [
                                {
                                    xtype: 'textfield',
                                    label: '姓名<font color="red">*</font>',
                                    name: 'name'
                                },
                                {
                                    xtype: 'emailfield',
                                    label: 'Email<font color="red">*</font>',
                                    name: 'email'
                                },
                                {
                                    xtype: 'textareafield',
                                    label: '内容<font color="red">*</font>',
                                    name: 'message',
                                    height: 90
                                }
                        ]
                    },
                    {
                    	 xtype: 'button',
                         text: '提交',
                         ui: 'confirm',

                         // The handler is called when the button is tapped
                         handler: function() {

                             // This looks up the items stack above, getting a reference to the first form it see
                             var form = this.up('formpanel');
                              

	                             // Sends an AJAX request with the form data to the url specified above (contact.php).
	                             // The success callback is called if we get a non-error response from the server
	                             form.submit({
	                            	 waitMsg: '正在提交...',
	                                 success: function() {
	                                     // The callback function is run when the user taps the 'ok' button
	                                     Ext.Msg.alert('非常感谢', '您的内容已经提交,我们会尽快联系你。', function() {
	                                         form.reset();
	                                     });
	                                 },
	                                 failure: function(form,action){
	                                	 Ext.Msg.alert('内容提交失败', action.errormsg);
	                                 }
	                             }); 
                         }
                    }
                ]
            }
        ]
    }
});

2)修改MyApp\resources\css目录下的 app.css,增加一下内容

.home {
	text-align: center; 
}
 
.home h1 {
	font-weight: bold;
	font-size: 1.2em
}

.home p {
	color: #666;
	font-size: 0.8em;
	line-height: 1.6em;
	margin: 10px 20px 20px 20px
}

.home img {
	margin-top: -10px
}

.home h2 {
	color: #999;
	font-size: 0.7em
}

.blog p {
	color: #555;
	padding: 20px 20px 0 20px;
	font-size: 1em;
	line-height: 1.4em
}
.x-tab .x-button-icon.volume:before,.x-button .x-button-icon.volume:before {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	text-align: center;
	font-family: "Pictos";
	content: "B";
}

.x-tab .x-button-icon.video:before,.x-button .x-button-icon.video:before {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	text-align: center;
	font-family: "Pictos";
	content: "V";
}

3)增加MainView.js中涉及的资源文件

4)添加blog.php

<?php
/**
 * Blog feed data
 * 
 */
/**
 * {
    responseData: {
        feed: {
            entries: [
                {author: 'Bob', title: 'Great Post', content: 'Really good content...'}
            ]
        }
    }
} 
 */

/**
 * http://localhost/MyApp/blog.php?_dc=1396706826288&node=ext-data-treestore-1-root&page=1&start=0&limit=25&callback=Ext.data.JsonP.callback1
 */
header("Content-type:application/json;charset=utf8;");
$jsonp=$_GET['callback'].'({"responseData":{"feed":{"entries":[';

for($i=1;$i<21;$i++){
	$author=json_encode('leegtang');
	$title=json_encode('今天的博文标题'.$i);
	$content=json_encode('博文'.$i.'内容');
	$contentSnippet=json_encode('博文'.$i.'内容简介');
	$link='blogv.php?id='.$i;
	$jsonp.='{"author":'.$author.',"title":'.$title.',"content":'.$content.',"link":"'.$link.'","contentSnippet":'.$contentSnippet.'}';
	if($i!=20)$jsonp.=',';
}


$jsonp.=']}},"responseStatus": 200});';
echo $jsonp;
?>

5)增加contact.php

<?php

$flag='false';
$msg='';
if($_POST['name'] == ''){
	$msg='请填写姓名';
}else if( $_POST['email'] == '' ){
	$msg='请填写Email';
}else if($_POST['message'] == ''){
	$msg='请填写内容';
}else{
	// 保存反馈信息
	// ....
	$flag='true'; 

}

echo '{"success":'.$flag.',"errormsg":"'.$msg.'"}';
?>

好了,项目完成。  

  

  

 

posted @ 2014-04-07 16:21  leegtang  阅读(462)  评论(0编辑  收藏  举报
Be brave and Good Luck.