nodejs

var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。

根据请求类型获取字段对应的值
请求类型为“get” this.param('version');
请求类型为“post” this.post('version');
请求类型为“file” this.file('verssion');

页面传值方式
使用get请求方式在url中添加id值向后台的/pcapi/index/hello传递id值,并执行回调函数function
$.get('/pcapi/index/hello?id='+id,function(obj){
})
使用post请求方式向后台传递json字符串,通过json传值,并执行回调函数function
$.post('/pcapi/index/hello',json,function(obj)
{

})
静态页面之间互相跳转
window.location.href('/pc/index/hello');
静态页面之间传值
window.location.href='./add?id='+id;

/**
*静态页面传值时获取url后携带的参数的方法
*/
function GetRequest() {
var url = location.search; //获取url中"?"符后的字串
var strs = [];
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for (var i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
}
}
return theRequest;
}

setTimeout(() => { window.location.href = '/pc/index/hello'}, 100);
延时操作

model的增删改查
var data = await this.model("students").where({ id :id }).find();查找单条
var data=await this.model('student').select(); 查找符合条件的多条数据
var result = await this.model('students').where({ id: id }).update({ s_name: name, s_sex: sex });更新符合条件的数据
var insertId = await this.model("students").add({ s_name:name,s_sex:sex });增加数据
var affectedRows = await this.model('students').where({id: ['=', id]}).delete();删除数据


在控制器中继承action时需要先引入
const Base = require('./base.js');

 

onclick="WdatePicker({ dateFmt: 'yyyy-MM-dd', skin: 'twoer',maxDate: '#F{$dp.$D(\'to\',{d:-0});}' })"

获取页面中下拉框选中的值
var data = $("#content_type").select2("data");
var data=$("#content_type").val();

截取字符串(从0到check_types.length - 1)的长度
check_types = check_types.substr(0, check_types.length - 1);

将字符串转化为字符串数组
effect_type1=effect_type1.split(',');

将字符串数组转化为整形数组
for(var i=0;i<effect_type1.length;i++){
effect_type[i]= parseInt(effect_type1[i]);
}

JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串,得到json字符串
JSON.parse()【从一个字符串中解析出json对象】得到json对象

复杂json对象要通过ajax方法传输
var str=JSON.stringify(json);
// $.ajax({
// cache:true,
// type:"post",
// url:"/pcapi/interface/UpdateUsers",
// dataType:"json",
// contentType:"application/json",
// data:str,
// async:false,
// success:function(obj)
// {
// console.log(obj)
// }
// })

 

分页工具
/**
* 分页 pageList
* @param tablename 表名
* @param fields 字段名 (全部字段为*)
* @param orderfield #-排序字段(必须!支持多字段)
* @param sqlwhere #-条件语句(不用加where)
* @param groupfield #-分组
* @param pagesize #-每页多少条记录
* @param pageindex #-指定当前为第几页
* @param sqlcounttable #-指定查询总记录数
* @param paging #-是否分页
* return @param totalpage
*/
global.sp_pageList = async(params)=>{

params = params||{};
//if(!params.pagesize){params.pagesize=10}
const pagesize = params.pagesize||10
if(!params.paging){params.paging=1}
if(!params.pageindex){params.pageindex=1}
if(!params.sqlwhere){params.sqlwhere="1=1"}
if(!params.fields){params.fields="*"}
if(!params.orderfield){params.orderfield=""}
if(!params.groupfield){params.groupfield=""}
if(!params.sqlcounttable){params.sqlcounttable=100000}
//console.log(params)
let sql =`set @totalpage = 0;call sp_pager('${params.tablename}','${params.fields}','${params.orderfield}','${params.sqlwhere}','${params.groupfield}','${pagesize}','${params.pageindex}','${params.sqlcounttable}', ${params.paging},@totalpage);select @totalpage;`;
let search = await think.model('mysql').query(sql);
//console.log(search)
let rest = {};
rest.aaData=search[1];
rest.totalpage=search[3][0]["@totalpage"];
return rest;

}

使用框架集成分页方法 countSelect() ,需要联合page方法,传入pageSize和pageIndex参数,并将
result.aaData = result.data; result.Totalcount = result.count; 每次返回分页数据


javascript闭包
闭包是可访问上一层函数作用域里变量的函数,即便上一层函数已经关闭。
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();

add();
add();
add();
最终结果为3,这样既保护了counter变量,也实现全局变量的功能。使得counter只能通过add改变

//给控件设置监听
$("#name").on('change',function(e){

})


var json =
// {
// wgqkey: "123",
// data:
// [
// {
// emp_id: "22",
// emp_no: "11112",
// trad_cd: "8389",
// emp_name: "王五",
// tel: "13771514123",
// gender: "男",
// validity: "1",
// hr_id: "201800721",
// identify: "320211199901011234",
// jobs:
// [
// {
// job_id: "10",
// job: "科技部长",
// position_id: "20",
// position: "部级",
// title_id: "10",
// title: "职位介绍"
// }
// ]
// },
// {
// emp_id: "23",
// emp_no: "11113",
// trad_cd: "8388",
// emp_name: "赵六",
// tel: "13771514123",
// gender: "女",
// validity: "1",
// hr_id: "201800720",
// identify: "320211199901011235",
// jobs:
// [
// {
// job_id: "10",
// job: "民政部长",
// position_id: "20",
// position: "部级",
// title_id: "10",
// title: "职位介绍"
// }
// ]
// }

// ]
// }

// var str=JSON.stringify(json);
// $.ajax({
// cache:true,
// type:"post",
// url:"/pcapi/interface/UpdateUsers",
// dataType:"json",
// contentType:"application/json",
// data:str,
// async:false,
// success:function(obj)
// {
// console.log(obj)
// }
// })
// // $.post('/pcapi/interface/UpdateUsers',str,function(obj){
// // if(obj.errno == 0)
// // {
// // console.log("成功");
// // }
// // else{
// // console.log(obj)


// // }
// // })


// }


使用json传值时,若是数组这样大数据量的话,需要使用JSON.stringfy()转化成字符串的格式,传到后端之后在使用JSON.parse()转为json对象格式

js中需要在foreach中跳出循环可以使用trycatch抛出异常实现,trycatch结构中,try代码区一旦抛出异常,就会被catch到从而执行catch中的代码,try中的剩余代码不会再执行,finally是一定会被执行的

posted @ 2018-09-26 10:49  850076572  阅读(183)  评论(0)    收藏  举报