artTemplate--模板使用自定义函数(2)
来源:互联网 发布:怀孕软件下载 编辑:程序博客网 时间:2024/06/07 05:40
我的常用自定义函数
<!DOCTYPE HTML><html><head> <meta charset="UTF-8"> <title>helper-demo</title> <script src="../dist/template.js"></script> <script src="../dist/jquery-1.11.3.js"></script></head><body><h1>辅助方法</h1><div id="content"></div><script id="test" type="text/html"> {{if hasEmptyProperties(testData)}} 查询成功,无该用户 {{else}} 查询该成功:xxx {{/if}} {{if isBlank(testData.queryHistory,'overtime')}} 是空的 {{else}} 不是空的 {{/if}} {{if isBlank(testData.queryHistory)}} 是空的 {{else}} 不是空的 {{/if}} {{if isEmptyProperty(testData.queryHistory,"time")}} 是空的 {{else}} 不是空的 {{/if}}</script><script> //递归需要用到的变量var gExit = false;var gIsExist = false;var gIsValid = false;function initGobalVariables(){ gExit = false; gIsExist = false; gIsValid = false;}/** * 判断传入的json对象或者json对象指定的属性是否为空 * @param data json对象 * @param key 属性 * @return boolean */template.helper("isBlank", function (data,key) { debugger var isBlank = false; if(typeof (key) =="undefined"||key.length==0){ if (typeof (data) == "object") { if ($.isEmptyObject(data)) { isBlank= true; } } else if((typeof (data) =="undefined")){ isBlank = true; } }else{ if (typeof (data) == "object") { if(typeof (data[key]) == "object"|| typeof (data[key]) == "undefined"){ if ($.isEmptyObject(data[key])) { isBlank = true; } } } else { if((typeof (data) =="undefined")){ isBlank = true; } } } return isBlank;});/** * 判断当前对象中指定属性是否为空(不推荐使用) * * <pre> * 适用于几个属性判断或运算 * * 如:{{testData.queryHistory.overtime==null || testData.queryHistory.name ==null}} * * 用法: * {{if isEmptyProperties(testData.queryHistory,"['overtime','name']")}} * 空的 * {else}} * 是空的 * {/if}} * </pre> * * @Param data * 传入的js或者json对象 return {boolean} * */template.helper("isEmptyProperty", function(data, keys) {var keys = [ keys ];var flag = false;if ($.isEmptyObject(data)) {flag = true;} else {$.each(keys, function(i, key) {if (flag == true) {return false;}flag = isEmpty(data, key);});}// 维护全局变量initGobalVariables();return flag;});/** * 递归判断当前被指定的属性在当前对象中是否为空 * * @param data * Json对象 * @returns {boolean} */function isEmpty(data, key) {// 中止执行当前递归if (gExit == true) {return gIsExist;}if (typeof data == "object") {if ($.isEmptyObject(data)) {gIsExist = true;gExit = true;// 满足条件,退出递归} else {$.each(data, function(k, v) {// 当前属性为传入的指定属性时if (k == key) {if ($.isEmptyObject(data[k])) {gIsExist = true;gExit = true;// 满足条件,退出递归} else {gIsExist = false;gExit = true;// 满足条件,退出递归}gIsValid = true;// 当前指定属性有效return false;// 退出当前迭代} else {if ($.isEmptyObject(data[k])) {return true;}gIsExist = isEmpty(v, key);}});}} else {// jsonOb is a number or string or undefinedif((typeof (data) =="undefined")){gIsExist = true;gExit = true;// 满足条件,退出递归}}if (!gIsValid) {gIsExist = true;}return gIsExist;}/** * 对指定Json对象遍历其属性判断是否存在空值,只要存在空属性就代表无效对象,返回false * * <pre> * Json对象1: testData:{ * queryHistory:{ * array:[], * query:{}, * name:'fdsafdsa' * } * Json对象2: testData:{ * queryHistory:{ * overtime:[], * query:{time:'100'}, * name:'fdsafdsa' * } * Json对象3: testData:{ * queryHistory:{} * } * 在模板输入: {{if isValidObject(testData)}} * 返回: true; * * * * </pre> * * @Param data * 要进行校验的Json对象 * @Param args * Json对象中的属性参数 * @author liangyh */template.helper("hasEmptyProperties", function(data) {var isInvalid = false;isInvalid = isExistEmptyProperties(data);// 维护全局变量gExit = false;gIsExist = false;return isInvalid;});/** * 递归判断当前对象是否存在空属性 * * @param data * Json对象 * @returns {boolean} */function isExistEmptyProperties(data) {// 中止执行当前递归if (gExit == true) {return gIsExist;}if (typeof data == "object") {if ($.isEmptyObject(data)) {gIsExist = true;gExit = true;// 满足条件,退出递归} else {$.each(data, function(k, v) {// k is either an array index or object keygIsExist = isExistEmptyProperties(v);});}} else{if((typeof (data) =="undefined")){gIsExist = true;gExit = true;// 满足条件,退出递归} }return gIsExist;} /** * 对日期进行格式化, * * @param date * 要格式化的日期 * @param format * 进行格式化的模式字符串 支持的模式字母有: y:年, M:年中的月份(1-12), d:月份中的天(1-31), * h:小时(0-23), m:分(0-59), s:秒(0-59), S:毫秒(0-999), q:季度(1-4) * @return String * @author yanis.wang * @see http://yaniswang.com/frontend/2013/02/16/dateformat-performance/ */ template.helper('dateFormat', function (date, format) { if (typeof date === "string") { var mts = date.match(/(\/Date\((\d+)\)\/)/); if (mts && mts.length >= 3) { date = parseInt(mts[2]); } } date = new Date(date); if (!date || date.toUTCString() == "Invalid Date") { return ""; } var map = { "M": date.getMonth() + 1, // 月份 "d": date.getDate(), // 日 "h": date.getHours(), // 小时 "m": date.getMinutes(), // 分 "s": date.getSeconds(), // 秒 "q": Math.floor((date.getMonth() + 3) / 3), // 季度 "S": date.getMilliseconds() // 毫秒 }; format = format.replace(/([yMdhmsqS])+/g, function (all, t) { var v = map[t]; if (v !== undefined) { if (all.length > 1) { v = '0' + v; v = v.substr(v.length - 2); } return v; } else if (t === 'y') { return (date.getFullYear() + '').substr(4 - all.length); } return all; }); return format; }); //数据 var data = { time: 1408536771253, testData: { queryHistory: { overtime: [], query: {time: '100'}, name: 'fdsafdsa' } } }; var html = template('test', data);//渲染模板 document.getElementById('content').innerHTML = html;</script></body></html>
0 0
- artTemplate--模板使用自定义函数(2)
- artTemplate--模板使用自定义函数(1)
- artTemplate模板的使用
- artTemplate模板引擎使用
- artTemplate模板试用2
- arttemplate 函数使用有感
- artTemplate的函数使用
- arttemplate js模板的使用
- artTemplate模板引擎简单使用
- artTemplate使用2
- arttemplate模板
- 【Web】artTemplate模板引擎:编译(生成渲染函数)+渲染(生成HTML串) 模板:基于JS的语法(JS+自定义)+HTML
- artTemplate模板引擎简单介绍使用
- arttemplate使用子模板实现嵌套循环
- JS模板引擎---腾讯artTemplate的使用
- 关于js模板引擎 arttemplate 的使用
- 【实践】ArtTemplate helper函数的使用
- arttemplate模板--字符串拼接中使用模板语法
- SQL的增删改查(详解)
- 左右法则
- linux下的程序调试方法汇总
- 在Eclipse中配置struts2第二种
- Caffe学习系列:solver及配置
- artTemplate--模板使用自定义函数(2)
- Codeforces 690D2 The Wall (medium)
- 数据的保护
- 从U盘启动CentOS7的Live CD iso镜像
- CVV代码
- discuz 发表带html内容的帖子
- 背景渐变
- 数据的保护
- MFC的DLL库工程中使用CWebBrowser2控件