1.ion-item标签使用时如果padding设置为0,如果该页面数据全是动态获取,在某些机型上会显示空白.
解决方法:padding设为0.1px;
2.与原生端交互时,原生端是不能直接获取到controller里的方法的,需要在html页面上标明ng-controller
调用原生示例方法
function getRunContext() {//获取设备类型
var type= "";
var contextInfo= navigator.userAgent;
if (contextInfo.indexOf('Android')> -1 || contextInfo.indexOf('Adr')> -1) {
type= "Android";
}else if (!!contextInfo.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
type= "ios";
}
return type;
}
// 判断是否存在某个变量。适用于函数参数判断、一般数据
// @arguments: 单个或多个参数
// 自定义函数
function isValidVarible(arguments) {
try {
for (var i= 0; i< arguments.length; i++) {
if (typeof(arguments[i])== "undefined" || arguments[i].length== 0) {
return false;
}else {
return true;
}
}
}catch (e) {
console.log(e);// 后期写入日志;
}
returnfalse;
}
// 调用原生通用接口
this.callNativeFuntionInterface = function (controllerName,callfunction, callbackFun, params) {
//this.getRunContext();//此方法用于判断设备类型
var isvalid = isValidVarible(callfunction, callbackFun, controllerName);
if (isvalid) {
var appElementString = "document.querySelector('[ng-controller={0}]')".format(controllerName);
var callbackFunName = "angular.element({0}).scope()".format(appElementString) + ".{0}".format(callbackFun);
var runContext = $rootScope.runContext;
if (runContext == "Android") {
// AndroidFun.getDeviceInfoFromAndroid();
//获取angular element 来得到 方法
// var $mycon = angular.element(document.querySelector('[ng-controller="'+controllerName+'"]')).scope();
// //安卓回调方法
// window[callbackFun] = $mycon[callbackFun];
//回调方法名传到andriod原生
params.callback = callbackFunName;
var parms = params;
if(androidNativeFun != undefined){
androidNativeFun[callfunction](JSON.stringify(parms));
}
} else if (runContext == "ios") {
var message = {
'method': callfunction,
'params': params,
'callback': callbackFunName
}
if(window.webkit != undefined){
window.webkit.messageHandlers.JSCallIOS.postMessage(message);
}
}
}
}
3.设置当前时间前后N天,N月同理dd.setMonth(dd.getMonth()+ 1 + month);
function setDateDay(AddDayCount){//传入需要设置的天数 如+7,-7,输出格式为YYYY-MM-DD
var dd= new Date();
dd.setDate(dd.getDate()+AddDayCount);
var y= dd.getFullYear();
var m= (dd.getMonth()+1<10?"0"+(dd.getMonth()+1):(dd.getMonth()+1));
var d= dd.getDate()<10?"0"+dd.getDate():dd.getDate();
returny+"-"+m+"-"+d;
}
4.将YYYY-MM-DD转换为date格式
function StringToDate(s) {//将YYYY-MM-DD转换为Date格式
var d= new Date();
d.setYear(parseInt(s.substring(0,4),10));
d.setMonth(parseInt(s.substring(5,7)- 1,10));
d.setDate(parseInt(s.substring(8,10),10));
// d.setHours(parseInt(s.substring(11, 13), 10));
// d.setMinutes(parseInt(s.substring(14, 16), 10));
// d.setSeconds(parseInt(s.substring(17, 19), 10));
return d;
}
5.页面下载文件方法
function downFiles(blob, fileName) { //获取mimetypes blob为文件流 fileName输入格式为(XXX.后缀名)
//filename,摘取常用部分
let mimetypes= {
'doc': 'application/msword',
'bin': 'application/octet-stream',
'exe': 'application/octet-stream',
'db': 'application/octet-stream',
'so': 'application/octet-stream',
'dll': 'application/octet-stream',
'pdf': 'application/pdf',
'ai': 'application/postscript',
'xls': 'application/vnd.ms-excel',
'ppt': 'application/vnd.ms-powerpoint',
'dir': 'application/x-director',
'js': 'application/x-javascript',
'swf': 'application/x-shockwave-flash',
'xhtml': 'application/xhtml+xml',
'xht': 'application/xhtml+xml',
'zip': 'application/zip',
'mid': 'audio/midi',
'midi': 'audio/midi',
'mp3': 'audio/mpeg',
'rm': 'audio/x-pn-realaudio',
'rpm': 'audio/x-pn-realaudio-plugin',
'wav': 'audio/x-wav',
'bmp': 'image/bmp',
'gif': 'image/gif',
'jpeg': 'image/jpeg',
'jpg': 'image/jpeg',
'png': 'image/png',
'css': 'text/css',
'html': 'text/html',
'htm': 'text/html',
'txt': 'text/plain',
'xsl': 'text/xml',
'xml': 'text/xml',
'mpeg': 'video/mpeg',
'mpg': 'video/mpeg',
'avi': 'video/x-msvideo',
'movie': 'video/x-sgi-movie'
}
let fileNameLast= fileName.substring(fileName.lastIndexOf("."), fileName.length)
let filetypes= mimetypes[fileNameLast+ ""];
var blob= new Blob([blob], {type: filetypes+ ""});
if(window.navigator.msSaveOrOpenBlob) {//文件下载ie兼容
navigator.msSaveBlob(blob, fileName);
}else{
var link = document.createElement('a');
link.href= window.URL.createObjectURL(blob);
link.download= fileName;
link.click();
window.URL.revokeObjectURL(link.href);
}
}
6.格式化金额千分位
/*
* 格式化金额千分位
* 参数说明:
* number:要格式化的数字
* decimals:保留几位小数
* dec_point:小数点符号
* thousands_sep:千分位符号
* roundtag:舍入参数,默认 "ceil" 向上取,"floor"向下取,"round" 四舍五入
* */
function NumberFormatService() {
return{
numberFormat:function(number, decimals, dec_point, thousands_sep, roundtag) {
number = (number + '').replace(/[^0-9+-Ee.]/g,'');
roundtag= roundtag|| "ceil";//"ceil","floor","round"
var n= !isFinite(+number)? 0 :+number,
prec= !isFinite(+decimals)? 0 : Math.abs(decimals),
sep= (typeof thousands_sep=== 'undefined')? ',': thousands_sep,
dec= (typeof dec_point=== 'undefined')? '.': dec_point,
s= '',
toFixedFix= function(n, prec) {
var k= Math.pow(10, prec);
return '' + parseFloat(Math[roundtag](parseFloat((n* k).toFixed(prec* 2))).toFixed(prec* 2))/ k;
};
s= (prec? toFixedFix(n, prec) :'' + Math.round(n)).split('.');
var re = /(-?\d+)(\d{3})/;
while(re.test(s[0])) {
s[0]= s[0].replace(re,"$1" + sep+ "$2");
}
if((s[1]|| '').length< prec) {
s[1]= s[1]|| '';
s[1]+= new Array(prec- s[1].length+ 1).join('0');
}
return s.join(dec);
}
}
}
7.获取手机型号
/*
* 获取手机型号
* */
function getPhoneModel() {
return{
phoneModel:function() {
//判断数组中是否包含某字符串
Array.prototype.contains = function(needle) {
for(iin this) {
if(this[i].indexOf(needle)> 0)
return i;
}
return -1;
}
var device_type= navigator.userAgent;
var md= new MobileDetect(device_type);
var os= md.os();
var model= "";
if(os== "iOS") {//ios系统的处理
os= md.os()+ md.version("iPhone");
model= md.mobile();
}else if(os == "AndroidOS") { //Android系统的处理
os= md.os()+ md.version("Android");
var sss= device_type.split(";");
var i= sss.contains("Build/");
if(i> -1) {
model= sss[i].substring(0, sss[i].indexOf("Build/"));
}
}
return model.trim();
}
}
}
8.邮箱正则
var reg = /^[a-zA-Z0-9]+((([-_.][a-zA-Z0-9]+)|[a-zA-Z0-9])+)@([a-zA-Z0-9]+[-.])+[a-zA-Z0-9]{2,3}$/
reg.test(str);