attachmentSimple 组件自定义滚动条样式

先把合并资源/UI2/system/components/comp2.min.js去掉或改名 在/UI2/system/components/justep/attachment/attachmentSimple.js中可以搜下字符串:x-doc-process-bar 表示的是上传进度条的样式,onProgress事件中显示的,onSuccess事件中隐藏的 你可以修改这个样式,在/UI2/system/components/justep/attachment/css/attachment.less中,修改变成你想要的样式后 (可以修改js中代码,自定义一个class样式的名字,也可以直接在/attachment.less里面修改x-doc-process-bar 的样式) 运行没问题了就合并资源,执行 \tools\dist\less.bat \tools\dist\dist.bat 重新编译css,合并css和js 就可以了

attachmentSimple 不自动上传

把/UI2/system/components/comp2.min.js去掉或改名 这个需要修改attachmentSimple组件的源码: /UI2/system/components/justep/attachment/attachmentSimple.js 将这个js代码中,initUploader:function()中的一段代码: self.uploader = new Uploader(self.$domNode.find('.x-item-upload'),{ actionUrl:actionUrl }); 改成: self.uploader = new Uploader(self.$domNode.find('.x-item-upload'),{ actionUrl:actionUrl, autoUpload:false }); 执行tools\dist目录下的dist.bat ,重新合并js资源生成UI2/system/components/comp2.min.js 然后,在你需要上传的时候,调用 this.comp('attachmentSimple组件Xid').uploader.submit(); 注: 可以看下源码,最终调用的是:/UI2/system/components/justep/uploader/uploader-html5.js uploader-html4.js 直接吧这个文件中的autoUpload 属性设置默认值为false 也是可以的!

等待环境初始化后执行代码!

原因:很多时候,使用第三方控件时,在onload事件中调用第三方API,报错undefind或者 执行失败,原因是第三方控件的运行环境还没有初始化好,这个时候,如果想在onload事件中调用它的方法!就需要不停判断环境是否可运行了! 解决方法:判断环境是否可用,最简单的代码就是判断要调用的方法是否为undefind,比如: var int=setInterval(clock,500) function clock() { if(obj.method){ int=window.clearInterval(int); //obj.method 表示要调用的方法,判断它如果存在了就可以clearInterval了 obj.method() } }

APP微信支付需要注意的问题

1.微信支付必须打包为发布包。(勾选发布模式)。 2.cordova参数必填,需要自己申请获得参数, 3.js代码中,改变notifyUrl或者其它参数的同时必须改变traceId、tradeNo这俩个参数 不然会取不到prepayId导致支付失败 4.android.keystore 文件必须是同一个,不可以重新生成(保证签名必须一样) 5.微信支付填写的费用参数(totalFee)最后会被除以100处理。必须是一个整数,最小是1,表示1分钱, 不能写小数 详细情况请参考:http://docs.wex5.com/pay-h5app-weixin/

使用WeX5做页面,后台使用其他框架,比如J2EE,如何做?

1.首先,如果使用WeX5开发前段页面,就要求后台返回的数据格式,必须能够加载到data组建中,关于data组件加载数据个方法:http://docs.wex5.com/wex5-ui-question-list-2032/ data组件 接管onCustomRefresh 和 onCustomerSave事件 实现后台数据交互,可以参考:/UI2/demo/acc_data/list.w 2.但是,一般的后端框架开发的程序,返回的结果肯定不会符合我们data加载数据的格式要求!所以,你的后台程序需要在写一层代码,去封装返回的数据格式!,请问你想做怎样的能力呢? (1)如果是只做数据的展示,那么简单格式的json数据返回就足够了! (2)如果有增删改的操作!那么简单格式就不够用了,建议使用我们提供的table格式!,关于table怎么封装,以及怎么和前端做数据交互,建议参考我们3.2.1版本的实现!里面代码都是开源的,通过jdbc实现的!参考它的做法,把你后端框架真正的数据交互,做一层数据格式的转换即可!参考: http://docs.wex5.com/wex5-server-question-list-2014/ 或者:调试新版本中的baasServer源码,看下他是如何封装table对象的 http://docs.wex5.com/debug-baas-platform-in-the-code/ http://docs.wex5.com/wex5-server-question-list-2017/ //根据ResultSet 和 columns 列定义得到table对象 table = Transform.createTableByResultSet(rs, (String) columns); (3) 也可以查询时,使用简单格式的json数据,增删改操作,封装自己的json格式数据,能标识行状态即可,然后后台解析自定义json数据,实现增删改操作 data行对象,增删改的状态获取 : http://docs.wex5.com/wex5-ui-question-list-2184

单页应用,单独打开某个页面,不要主页先加载

单页应用要求 ,index.w中定义好 shellImp :http://docs.wex5.com/shellimpl/ 在index.w中 不指定content ,所有的页面跳转再js中实现!   Model.prototype.modelLoad = function(event){ var page = window.location.href.split('#!')[1] if(page){ justep.Shell.showPage(page); }else{ justep.Shell.showPage('main'); } }; 这样就可以不显示主页的情况下直接跳转到指定页面 比如把仿淘宝中,index.w 中的 xid为main的节点删除掉,然后js中代码改成如上,就可以实现直接打开某页

关于样式的动态绑定

使用bind-style  或者 bind-css就可以实现! 建议看下文章介绍: http://doc.wex5.com/data-bind-css/ http://docs.wex5.com/data-bind-style/ 案例:/UI2/demo/misc/bind/index.w 建议先学习下动态绑定视频: http://doc.wex5.com/data-bind/ 另外:如果比较复杂的业务逻辑,来控制显示样式,可以通过bind-style 或 bind-css 绑定一个自定义js方法,在js中通过复杂的业务逻辑运算,进行字符串的拼接!最终返回一个json 对象即可, 比如 //bind-css return JSON.parse('{"text-danger": true}'); //bind-style return JSON.parse('{"color": "#c0c0c0"}'); 也可以直接构造返回一个json对象,比如 //bind-css return {"text-danger": true}; //bind-style return {"color": "#c0c0c0"}

data组件和baasData组件的异同

同: 1.两中data 组件的用法都是一样的!都是前端存储数据用的!存放在缓存里,数据的存储量和物理内存有直接关系 2.baasData 组件是继承的data组件实现的!进行了一些扩展,它拥有data组件所有的API 方法 异: 1.不过baasData 有专门提供 BaasServer 为对应的服务端请求,baasData 和 BaasServer是 耦合的!可以配合使用!提高开发速度!data组件指定等action属性即可 2.data组件更灵活,可以自己接管加载数据的事件,对任何的数据源进行加载数据,数据交互 比如sqlite:/UI2/demo/sqlite/simpleData/index.w 比如第三方服务器 :http://docs.wex5.com/wex5-server-question-list-2026 也可以请求baasServer 中的数据:http://docs.wex5.com/wex5-ui-question-list-2174   最终就是把数据加载到data 或  baasData组件中后, 剩下的对数据处理的方法就都一样的! 可以把它当做是js中的一个集合,一个高级数组对象!

attachmentSimple 动态指定服务器地址

客户端js Model.prototype.modelLoad = function(event){ this.comp("attachmentSimple1").actionUrl = URL; this.comp("attachmentSimple1").uploader.actionUrl = URL; } 服务器端需要自己写代码接管IO流的操作,将文件存储到服务器上 代码可以参考:/Baas/justep/SimpleFileStore.java 有人做过,通过jquery插件 实现提交,可以参考:http://bbs.wex5.com/forum.php?mod=redirect&goto=findpost&ptid=111201&pid=165340769

将sqlite数据库表资源文件打包在APP中

将sqlite 资源文件放在平台的模板目录下, 这是我们的模板:/Native/templates/advanced/www 可以放在这个目录中打包即可! 在APP中,直接修改和查寻数据库即可,sqlite 使用案例:/UI2/demo/sqlite/simpleData/index.w this.database = window.sqlitePlugin.openDatabase({ name : 'dbname.db', createFromLocation : 1 });// 数据库 //数据库名需要把全名写出来