sencha touch 我的公用类myUtil(废弃 仅参考)

  1 /*公共类*/
  2 Ext.define('myUtil', {
  3     statics: {
  4         //store公用加载方法
  5         storeLoadById: function (id) {
  6             var store = Ext.getStore(id);
  7             this.storeLoadByParams(store, null);
  8         },
  9         //store加载方法,带参数
 10         storeLoadByParams: function (store, params) {
 11             store.removeAll();
 12             store.setProxy({
 13                 extraParams: params
 14             });
 15             this.storeLoad(store, true);
 16         },
 17         //加载stroe
 18         storeLoad: function (store, isUp) {
 19             var me = this;
 20             if (store.getCount() < 1 || isUp) {
 21                 store.loadPage(1);
 22             }
 23         },
 24         //list->info公用加载方法
 25         showInfo: function (record, view, url, params, Summary) {
 26             var me = this;
 27             if (record.data.Summary) {
 28                 view.setData(record.data);
 29                 return;
 30             }
 31             Ext.Ajax.request({
 32                 url: url,
 33                 params: params,
 34                 success: function (result, request) {
 35                     result = Ext.decode(result.responseText);
 36                     record.set(result);
 37                     view.setData(record.data);
 38                 }
 39             });
 40         },
 41         /*为Ext.Viewport添加一个消息提示组件*/
 42         addMessage: function () {
 43             Ext.Viewport.setMasked({
 44                 xtype: 'loadmask',
 45                 cls: 'message',
 46                 transparent: true,
 47                 indicator: false
 48             });
 49             this.hideMessage();
 50         },
 51         /*显示一个消息提示*/
 52         showMessage: function (mes, autoHide) {
 53             var me = this,
 54             message = this.getMessage();
 55             message.setMessage(mes);
 56             message.show();
 57             //是否自动关闭提示
 58             if (autoHide) {
 59                 setTimeout(function () {
 60                     message.hide();
 61                 },
 62                 500);
 63             }
 64         },
 65         /*隐藏消息提示*/
 66         hideMessage: function () {
 67             this.getMessage().hide();
 68         },
 69         //消息组件
 70         getMessage: function () {
 71             return Ext.Viewport.getMasked();
 72         },
 73         //向Viewport中push一个视图
 74         ePop: function (xtype) {
 75             var me = Ext.Viewport,
 76             view = Ext.create(xtype);
 77             //切换
 78             me.animateActiveItem(view, {
 79                 type: 'slide',
 80                 direction: 'left'
 81             });
 82         },
 83         //监控Viewport界面切换,切换时销毁旧视图
 84         eActiveitemchange: function () {
 85             var me = Ext.Viewport;
 86             me.onAfter('activeitemchange',
 87             function (t, value, oldValue, eOpts) {
 88                 if (oldValue) {
 89                     //强制销毁,防止销毁不完全引发错误
 90                     me.remove(oldValue, true);
 91                 }
 92             });
 93         },
 94         //json数据转换成xml数据
 95         iterateJson: function (json) {
 96             var value = '',
 97             arr = [];
 98             for (var tag in json) {
 99                 value = json[tag];
100                 if (Ext.isObject(value) || Ext.isArray(value)) {
101                     value = this.iterateJson(value);
102                 }
103                 if (tag > -1) {
104                     arr.push(value);
105                 } else if (value != null && value != '') {
106                     arr.push(this.format('<{0}>{1}</{0}>', tag, value));
107                 }
108             }
109             return arr.join('');
110         },
111         //格式化字符串
112         format: function () {
113             return Ext.util.Format.format.apply(this, arguments);
114         },
115         //显示pick
116         showPick: function (xtype, params) {
117             var pick = Ext.create(xtype);
118             Ext.Viewport.add(pick);
119             pick.show(params);
120         },
121         //结束pick
122         endPick: function (xtype) {
123             var pick = Ext.Viewport.down(xtype);
124             if (pick) {
125                 pick.endPick();
126             }
127         },
128         //重写ajax
129         overrideAjax: function () {
130             var me = this;
131             //开始加载
132             Ext.Ajax.on('beforerequest',
133             function (connection, options) {
134                 if (!options.hidMessage) {
135                     me.showMessage('正在努力加载中...');
136                 }
137             });
138             //加载成功
139             Ext.Ajax.on('requestcomplete',
140             function (connection, options) {
141                 me.hideMessage();
142             });
143             //加载失败
144             Ext.Ajax.on('requestexception',
145             function (connection, options) {
146                 if (!options.hidMessage) {
147                     me.showMessage('加载失败,请稍后再试...', true);
148                 }
149             });
150         },
151         //重写Pick相关
152         overridePick: function () {
153             //汉化时间
154             Ext.apply(Ext.DateExtras.monthNames, ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]);
155             //汉化DatePicker控件
156             Ext.define("Ext.zh.DatePicker", {
157                 override: "Ext.picker.Date",
158                 config: {
159                     yearFrom: 2000,
160                     monthText: '月',
161                     dayText: '日',
162                     yearText: '年'
163                 }
164             });
165             //汉化Picker控件
166             Ext.define("Ext.local_zh_cn.Picker", {
167                 override: "Ext.picker.Picker",
168                 config: {
169                     doneButton: '确定',
170                     cancelButton: '取消'
171                 }
172             });
173         },
174         //安卓返回按钮
175         pGback: function () {
176             var cardPanel = Ext.getCmp('cardPanel');
177             var back = cardPanel.getNavigationBar().backButtonStack;
178             if (back.length > 1) {
179                 cardPanel.Back();
180                 this.isExit = false;
181             } else {
182                 if (this.isExit) {
183                     navigator.app.exitApp();
184                 } else {
185                     this.isExit = true;
186                     cardPanel.showMessage('再按一次退出程序');
187                 }
188             }
189         },
190         //上传图片
191         openFileSelector: function () {
192             /*
193             *图片选择方式
194             *PHOTOLIBRARY:从相册中选取
195             *CAMERA:调用摄像头
196             *AVEDPHOTOALBUM:左右不明
197             */
198             var source = navigator.camera.PictureSourceType.PHOTOLIBRARY;
199             /*
200             *图片返回格式
201             *DATA_URL:64位字符串
202             *FILE_URI:返回文件路径
203             *NATIVE_URI:返回系统路径 iOS:eg. assets-library://  Android: content://
204             */
205             var destinationType = navigator.camera.DestinationType.FILE_URI;
206             /*
207             *媒体类型
208             *PICTURE:图片
209             *VIDEO:视频 始终返回FILE_URI格式
210             *ALLMEDIA:支持任意文件选择 
211             */
212             var mediaType = navigator.camera.MediaType.PICTURE;
213             var options = {
214                 quality: 50,
215                 //图像质量[0-100]
216                 destinationType: destinationType,
217                 sourceType: source,
218                 mediaType: mediaType
219             };
220             navigator.camera.getPicture(this.uploadFile, this.uploadBroken, options);
221         },
222         //图片选择失败 
223         uploadBroken: function (message) {
224             this.showMessage(message, true);
225         },
226         //选择图片后上传
227         uploadFile: function (fileURI) {
228             var options = new FileUploadOptions();
229             options.fileKey = "userfile";
230             options.fileName = fileURI.substr(fileURI.lastIndexOf('/') + 1);
231             options.mimeType = "multipart/form-data";
232             options.chunkedMode = false;
233             ft = new FileTransfer();
234             var uploadUrl = encodeURI(config.imgUp);
235             this.showMessage('正在上传中,请等待...');
236             ft.upload(fileURI, uploadUrl, this.uploadSuccess, this.uploadFailed, options);
237         },
238         //文件上传成功
239         uploadSuccess: function (r) {
240             var res = Ext.decode(r.responseText);
241             this.showMessage(res.message, true);
242         },
243         //文件上传失败
244         uploadFailed: function (error) {
245             this.showMessage('图片上传失败...', true);
246         },
247         //app初始化执行
248         inIt: function () {
249             this.addMessage();
250             this.overrideAjax();
251             this.overridePick();
252         }
253     }
254 });

 

 

你可能感兴趣的:(Sencha Touch)