note_sy
循环数组,最后才执行
@$timeout.cancel(@timer) if @timer
@timer = @$timeout ()=>
@map.centerAndZoom(point, 12)
@checkLocation()
,300
媒体查询
@media screen and(min-width: 1150px) and(max-width: 1400px)
将表格的表头固定方法
1.将tbody、thead、tr设置为display:block,width:100%;
2.将th、td做成左浮动并设置width;
3.将tbody设置max-height、overflow:aotu
admin新增项目的步骤
1.新建一个jsp页面
2.在control写一个映射
3.在菜单管理添加页面
克隆项目
git clone your url
切换分支
1.点‘version control’按钮
2.选择分支 ‘Branch:xx’输入框的右边
3.选择上传的文件,点右键
4.选择cherry-pick
5.然后push
JS
for...in 可以遍历对象也可以遍历数组
delete obj.name 去掉对象的name
parseInt() 将一个数据转换为整数
parseFloat() 将指定的数据转换为小数
encodeURL() 对URL格式的字符串进行编码,返回编码后的字符串
decodeURL() 对已编码的字符串进行解码
获取文件名的后缀
第一种:var suffix = file.slice(file.lastIndexOf(".") + 1,file.length);
第二种:var suffix = file.substr(file.lastIndexOf ('.') + 1)
js操作字符串
concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串。
indexOf() – 返回字符串中一个子串第一处出现的索引。如果没有匹配项,返回 -1 。
charAt() – 返回指定位置的字符。
lastIndexOf() – 返回字符串中一个子串最后一处出现的索引,如果没有匹配项,返回 -1 。
match() – 检查一个字符串是否匹配一个正则表达式。
substring() – 返回字符串的一个子串。传入参数是起始位置和结束位置。
replace() – 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。
search() – 执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1 。
slice() – 提取字符串的一部分,并返回一个新字符串。
split() – 通过将字符串划分成子串,将一个字符串做成一个字符串数组。
length – 返回字符串的长度,所谓字符串的长度是指其包含的字符的个数。
toLowerCase() – 将整个字符串转成小写字母。
toUpperCase() – 将整个字符串转成大写字母。
var result = str1.localeCompare(str2) 两个字符串的比较 相等输出0,不相等输出1
input 去掉黄色背景
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px white inset;
}
input不能输入特殊字符
<input type="text" onkeyup="this.value=value.replace(/[^0-9\u4e00-\u9fa5\a-z\A-Z]/g, '')" >
js操作数组
添加
arr.push() 在数组后面添加
arr.unshift() 在数组前面添加
删除
arr.pop() 删除最后一个元素
arr.shift() 删除最前面一个元素
截取和合并
arr.slice(start,[end]) 截取
arr.concat() 合并
排序
arr.reverse() 反转元素
arr.sort() 对数组元素排序
转成字符串
arr.join(separator) 用separator隔开
删除、插入、替换!!!
arr.splice()
删除:两个参数,第一个参数起始位置,第二个参数删除个数
插入:三个参数,第一个参数(其实位置),第二个参数(0),第三个参数(插入的项)
替换:三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)
toString 和 string 的区别
string()是万能的
toString() 要排除null和undefined
转换键盘传过来的值
realKey = String.fromCharCode(keyCode);
Z
select2插件
1 data-minimun-results-for-search='10' tabindex="-1" 去掉搜索框
2 muliple='muliple' 变成多选
3 data-placeholder 相当于placeholder, 要添加一个空的<option></option>
提交代码
git push -u origin master
HTTP状态码
1XX 用于指定客户端相应的某些动作
2XX 用于表示成功
3XX 用于已经移动的文件并且被包含在定位头信息中指定心的地址信息(重定向,为了完成请求,必须进一步执行的动作)
4XX 用于指出客户端错误
5XX 用于支持服务器错误
100 继续;101 分组交换协议
200 ok;201 被创建;202 被采纳;203 非授权信息;204 无内容;205 重置内容;206 部分内容;
300 多选项;301 永久地传递;302 找到;303 参见其他;304 未改动;305 使用代理;307 暂时重定向;
400 错误请求(可能是get请求写成post请求);401 未授权;402 要求付费;403 禁止;405 不允许的方法;406 不被采纳;407 要求代码授权;
408 请求超时;409 冲突;410 过期的;411 要求的长度;412 前提不成立;413 请求实力太大;
414 请求url太大;415 不支持的媒体类型;416 无法满足的请求范围;417 失败的预期;
500 内部服务器错误;501 未被使用;502 网关错误;503 不可用的服务;504 网关超时;505 HTTP版本未被支持;
一 Ionic
ionic 的安装
1 npm install -g ionic@1.3
2 ionic start myApp tabs
3 ionic serve(可无,目的是看app是否可以运行)
3.5 ionic setuo sass
4 ionic platform add android
5 ionic build android
6 ionic run android(可无,目的是连接数据后在手机上运行)
设置ionic图标及起始页
ionic resources
ionic resources --icon
ionic resources --splash
修改app名字
config.xml里面的<name></name>
发布网站上改app名称
1.cordova plugin add cordova-plugin-app-name --variable APP_NAME=xxx
2.npm install xml2js
ionic 苹果打包
1.在Xcode导入ios文件
2.确认在模拟器上运行正常
3.选择Generic IOS Device 并按三角形运行
4.点最上面的菜单的product按钮 选择Archive进行打包
5.点Window的Organizer查看打包好的ipa
改成用IP访问:
ionic serve --address 10.0.0.5
改端口访问:
ionic serve --port 8000
app调试
Windows + r 然后输入MMDS
ionic 刷新当前页面
.state('page.xx',?{url:page'/xx',templateUrl:?'xxxx.html',reload:true,})?
$state.go('page.xx',{},{reload:true});
飞驰网址:feichi.nevtsp.com
测试环境:120.77.67.239
隐藏tabs
1)改ion-tabs标签
<ion-tabs class="tabs-icon-top {{$root.hideTabs}}">
</ion-tabs>
2)自定义指令
.directive('hideTabs', function($rootScope) {
return {
restrict: 'A',
link: function($scope, $el) {
$rootScope.hideTabs = 'tabs-item-hide';
$scope.$on('$destroy', function() {
$rootScope.hideTabs = '';
});
}
};
});
3)改ion-view标签
<ion-view view-title="Dashboard" hide-tabs>
</ion-view>
1. Ionic发送传参:
$state.go('main',{name:'web'})
<a href='#/myMain/web'></a>
<a ui-sref='main({name:'web'})'></a>
2. Ionic创建cookie
@$cookieStore.put('fuck','f')
@$cookieStore.get('fuck')
@$cookieStore.remove('fuck')
3. 隐藏键盘时触发的事件
window.addEventListener 'native.keyboardhide', ()=>
4. ng-class
<div ng-class="{true: 'active', false: 'inactive'}[isActive]">
<div ng-class {'selected': isSelected, 'car': isCar}">(key/vaule)
Ex:
<ion-item ng-repeat="bus in busList track by $index" ng-click="click(bus)" ng-class="{'three-1': bus.alarmLevel==3, 'two-1': bus.alarmLevel==2, 'one-1': bus.alarmLevel==1}">
5. ionic 禁止返回上一个页面
disableBack:true
@$ionicHistory.nextViewOptions
disableBack: true
//coffee
arr1=[1,2,3]
console.log arr1[i-1],arr1[i] for i in [1..arr1.length-1]
#coffee去重
Array::unique = ->
output = {}
output[@[key]] = @[key] for key in [0...@length]
value for key, value of output
6. 时间过滤器
<span>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span><br>
7.序列化:
var str = $httpParamSerializerJQLike($scope.order)
8.android tab置于底部
(1)在config文件夹中添加一个coffee文件
(2)添加内容class 例如: TabPosition;constructor: ($ionicConfigProvider) ->
$ionicConfigProvider.tabs.position('bottom')
angular.module('app').config ['$ionicConfigProvider', TabPosition]
(3)重启gulp watch
二 react
1. this.state读取状态
this.setState修改状态
getInitState初始化状态
2. props和state的区别是props是不可变的,用来传值 state可以根据与用户交互来改变
3. 设置状态:setState
替换状态:replaceState
设置属性:setProps
替换属性:replaceProps
强制更新:forceUpdate
获取DOM节点:findDOMNode
判断组件挂载状态:isMounted
4. 生命周期
Mounting:已插入真实 DOM
Updating:正在被重新渲染
Unmounting:已移出真实 DOM
componentWillMount 在渲染前调用,在客户端也在服务端。
componentDidMount : 在第一次渲染后调用,只在客户端。之后组件已经生成了对应的DOM结构,可以通过this.getDOMNode()来进行访问。 如果你想和其他JavaScript框架一起使用,可以在这个方法中调用setTimeout, setInterval或者发送AJAX请求等操作(防止异部操作阻塞UI)。
componentWillReceiveProps 在组件接收到一个新的prop时被调用。这个方法在初始化render时不会被调用。
shouldComponentUpdate 返回一个布尔值。在组件接收到新的props或者state时被调用。在初始化时或者使用forceUpdate时不被调用。
可以在你确认不需要更新组件时使用。
componentWillUpdate在组件接收到新的props或者state但还没有render时被调用。在初始化时不会被调用。
componentDidUpdate 在组件完成更新后立即调用。在初始化时不会被调用。
componentWillUnmount在组件从 DOM 中移除的时候立刻被调用。
//
使用 onChange 事件来监听 input 的变化,并修改 state
ES6
intellij idea 改成支持es6语法
file>settings>Lauguages & Frameworks>javascript>修改ECMAscript6
//
var name = 'Bob',time = 'today';
`Hello ${name},how are you ${time}`//添加变量
`In ES5 "\n" is a line-feed`//换行
let 用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效 for (let i = 0; i < 10; i++)
const 定义一个常量
global 定义一个全局变量
let a= 1;let b = 2; let c = 3;可以写成这样 let [a,b,c] = [1,2,3]
三 JS
js的原始类型:undefined,null,number,boolean,string
js的引用类型:object, function, array
symbol表示独一无二的值,是js的第七数据类型。前六种:undefined、null、string、boolean、number、object
JSON.stringify(obj)
JSON.parse(json)
输入url后的加载过程(第一种)
1 解析URL 统一资源定位 某个资源的地址 1.传输协议 2.服务器 3.域名 4.端口 5.虚拟目录 6.文件名 7.锚 8.参数
2 DNS解析 查询浏览器缓存 检查系统缓存 检测路由器缓存 查询ISP DNS缓存 递归查询
3 浏览器与网站建立TCP连接(三次握手)
4 请求和传输数据
5 浏览器渲染页面
输入url后加载过程(第二种)
1 输入地址
2 浏览器解析DNS
3 浏览器向web服务器发送一个HTTP请求
4 服务器的永久重定向相应
5 浏览器跟踪重定向地址
6 服务器处理请求
7 服务器返回一个HTTP相应
8 浏览器显示html
9 浏览器发送请求获取嵌入在html中的资源(如图片、音频、视频、css、js等等)
10 浏览器发送异步请求
var elem=parent.querySelector("selector")//只找一个
var elems=parent.querySelectorAll("selector")//多个
阻止冒泡 event.stopPropagation();
取消默认事件 e.preventDefault();
num = num.toFixed(2)//保留两位小数
js input监听事件
$('#input').bind('input propertychange',function(){});
$("p").one("click",function(){})
获得时间毫秒数
date = new Date().getTime()
$("#p").blur();$("#p").focus(); 用来强制获取或失去焦点
$.isArray(obj) boolean值,为数组时结果为true
jquery截取字符串最后一个字符
str.substr(str.length-1,1)
Object.keys(ret.data).length > 0 //判断对象是否为空
正则
eg = new RegExp(kw,'i')??if(match(reg))? //模糊查询
reg= new RegExp(/^(?![0-9]+$)[a-zA-Z0-9=.*~!@#$%^&*_+`\-=}{:";'<>?,.\/]{6,12}/)
密码必须是6-12位的数字或字符组成(不能是纯数字)
获取url参数
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
调用:param1 = getQueryString('param1');
获取当天时间的零点
now = new Date()
today = new Date()
today.setHours(0)
today.setMinutes(0)
today.setSeconds(0)
today.setMilliseconds(0)
Time = today.getTime()+1000*60*60*24-now.getTime()
console.log Time/1000/60/60
将字符串变成数组 string.split('') || string.split(',')
将数组变成字符串 arr.join(',');
转换时间的插件moment.js
white-space:不换行;normal
word-wrap: break-word; 自动换行
width:100%;
word-break:keep-all;/* 不换行 */
white-space:nowrap;/* 不换行 */
overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis;/* 当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一起使用。*/
防止用户对文本框中输入文本:onfocus="this.blur()"
只执行一次的函数,例如
$(document).one('pjax:beforeReplace', function(){}
获取url后面的参数
var url=location.search;
if(url.indexOf('?')!==-1){
var busId=url.split('=')[1];
}
apply,call 改变函数体的this指向
var numbers = [5, 458 , 120 , -215 ];
var maxInNumbers = Math.max.apply(Math, numbers), //458
maxInNumbers = Math.max.call(Math,5, 458 , 120 , -215); //458\
arr = ["500088", "510088", "520089"]
arr.join(',) =>500088,510088,520089
substring 截取
四 CSS
段落两端对齐:text-align: justify;
1. Animation:name 3s linear 1s infinite alternate;
//alternate:可以反向移动 不需要反向:normal
linear ease ease-in-out ease-in ease-out
2. //解决input背景为黄色问题
input:-webkit-autofill {
box-shadow: 0 0 0 1000px white inset !important;
}
3. placeholder颜色的修改
::-webkit-input-placeholder { /* WebKit browsers */
color: #999;
}
4.letter-spacing:8px
5. sss//translate效果
.shadow:after{
content:'';
position: absolute;
top:0;left:0;
width:100%;
height:100%;
box-shadow:0 0 transparent;
}
.shadow:hover:after{
box-shadow:0 0 20px 20px #aaa;
transform:scale(1.3);
transition:all 1s linear;
opacity:0;
}
文本溢出隐藏并显示省略号
white-space:nowrap 强制不换行
overflow:hidden 文本溢出隐藏
text-overflow:ellipsis 显示省略号
input取消记忆功能,添加属性 autocomplete=‘off’
禁止点击:cursor:not-allowed;
媒体查询
@media only screen and(min-width:300px) and (max-width:500px) {}
initial 最初的,不继承属性
inherit 继承 集成属性
获取屏幕宽度
window.screen.availWidth
改变滚动条的样式
::-webkit-scrollbar {
width: 8px;
height:10px;
}
/* 滚动槽 */
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px transparent;
border-radius: 10px;
border-color: transparent;
}
/* 滚动条滑块 */
::-webkit-scrollbar-thumb {
border-radius: 10px;
background: rgb(3, 87, 157);
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
}
五 Git命令行
git checkout -- 文件名 恢复之前删除的
git status
git add .
git commit -m 'modify'
git push -u origin --all
git diff
git remote -v
git status
git add .
git commit
git remote -v
git remote set-trl origin xxurl
git push -u origin --all
git push -u origin master
查看设备
adb devices
切换分支
version control => log => Branch => 右键 => Cherry-Pick
bower里有插件名字 lib里没有插件文件,应当:
bower install
用cmd上传代码步骤
1.进入目录
2.git remote -v 查看分支
3.git remote set-url origin yourUrl 例如:http://bear.liang@10.0.0.199:8888/vehicle-frontend/vehicle-web.git
4.git status
5.git push -u origin master 如果上传失败,继续以下步骤
6.git pull
7.git push -u origin master
删除包:
先在bower里删掉名称 然后在git里执行bower prune命令行
六 weinre 安装及步骤
1 安装:
npm -g install weinre
2 使用步骤
1 运行weinre:weinre --boundHost IP地址 --httpPort 自定义
例如:weinre --boundHost 10.0.0.2 --httpPort 1234
2 在浏览器url中输入:10.0.0.2:1234
3 在要调试的页面中添加一段js
<script src="http://10.0.0.2:1234/target/target-script-min.js#anonymous"></script>
4 在手机浏览器url中输入调试页面的地址
七 极光推送
1 在项目中下载安装
cordova plugin add jpush-phonegap-plugin@3.1.0 --variable APP_KEY=XXX
2 打开插件目录下的plugin.xml文件,找到
<meta-data android:name="JPUSH_APPKEY" android:value="your appkey"/>
用刚才在极光推送创建的应用的appkey 替换 “your appkey"。
ionic build android
ionic run android
vue的安装
1 cnpm install vue
2 cnpm install --global vue-cli
3 vue init webpack my-project (一系列回车默认)
4 cd my-project
5 cnpm install
6 cnpm run dev
svg图标字体的制作方法
网址:icomoon.io,打开后点击右上角的“ICOMOON App”按钮,点击左上角“Import Icons”,选择文件后,点击右下角的“Generate Font”,后点击右下角的“Download”完成制作
后端接口
'/energy/dashBoard/queryAreaEnergyUsed'
dashBoard 控制器
queryAreaEnergyUsed 方法
cmd命令行
cls 回车 清屏
apk签名
1.生成一个未签名的apk
ionic build --release android
2.使用命令行生成数字证书
keytool -genkey -v -keystore bear -alias bear -keyalg RSA -validity 20000
3.使用jarsigner工具为apk应用程序签名
jarsigner -verbose -keystore bear -signedjar afanda-signed.apk android-release-unsigned.apk bear
或者是
jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore bear -signedjar Energy_signed.apk energy.apk bear
参考网站:http://blog.csdn.net/yu17310133443/article/details/52701492
apk签名2(可以调起支付宝和微信)
1.生成一个签名文件 (微信上收藏上 afanda.keystore)
2.cordova build --release android (生成未签名的apk)
3.jarsigner -verbose -keystore afanda.keystore -signedjar android-signed.apk android-release-unsigned.apk afanda (密码:android)
4.adb install -r android-signed.apk (在手机上安装)
vue学习笔记:
1.html v-html
2.属性 v-bind:class="{'class1': class1}" :class="[active? 'active': '']"
3.表达式 {{5+5}}<br>{{ ok ? 'YES' : 'NO' }}
4.指令 v-if v-else v-else-if v-show
5.<a v-bind:href="url">菜鸟教程</a> =>:href="url"
6.<a v-on:click="doSomething"> =>@click="doSomething"
7.<input v-model="message">
8.过滤器:{{ message | capitalize }}filters: {capitalize: function(){}}
9.循环<li v-for="site in sites"></li> v-for="value in object" 可用对象循环 <li v-for="(value, key, index) in object"> <li v-for="(value, index) in arr">
10. scoped <style scoped></style>css只在当前组件中起作用
11.this.items.$remove(item); 删除item元素
12.$set(key,value)
Vue实例详解与生命周期
1.data
2.computed
3.methods
4.watch
5.el =>el:"#app"
生命周期
1.beforeCreate
2.created
3.beforeMount
4.mounted
5.boforeUpdate
6.updated
7.beforeDestroy
8.destroyed
ionic3
打包:ionic cordova build ios --prod --release
钩子函数
ionViewDidLoad 第一次调用 返回void
ionViewWillEnter 每次调用 返回void
ionViewDidEnter 每次调用 返回void
ionViewWillLeave 每次调用 返回void
ionViewDidLeave 每次调用 返回void
ionViewWillUnload 每次调用 返回void
ionViewCanEnter 每次调用 返回boolean
ionViewCanLeave 每次调用 返回boolean
ionic g page YourPageName //创建新页面
ionic g directive YourPageName //创建指令
ionic g component YourComponentName //创建组件
ionic g provider YourProviderName //创建服务
ionic g pipe YourPipeName //创建过滤器
ionic3自定义组件
1.ionic g component yourComponetName
2.在app.module.ts里的imports声明
3.在使用自定义组件的module.ts中引入compenentsModule文件 并在imports添加compenentsModule
ionic3自定义过滤器
1.ionic g pipe yourPipeName
2.在使用过滤器的module.ts中引入pipes.module.ts文件,并在import添加pipes.module.ts的名字
3.不能在app.module.ts中引入pipe文件 否则会重复报错
ionic3 禁止横屏
1.安装插件
ionic cordova plugin add cordova-plugin-screen-orientation
2.使用
<preference name="Orientation" value="portrait" />
存放易加氢包
\\10.0.0.200\share\file\web-developer
android -sdk
下载地址
https://www.cnblogs.com/liaolei1/p/7249186.html
配置环境变量
添加环境变量:ANDROID_HOME 然后加路径,最后在环境变量的path添加所需要的工具 比如:%ANDROID_HOMR%platform_tool
window安装android环境
1.下载jdk
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载:jdk-8u161-windows-x64.exe
2.下载android sdk
http://tools.android-studio.org/index.php/sdk
下载:installer_r24.4.1-windows.exe
3.配置环境变量
1).添加 ANDROID_HOME + 路径 比如C:\Android\sdk
2).添加 JAVA_HOME + 路径 比如C:\Program Files\Java\jdk1.8.0_102
3).在环境变量里的path添加
%ANDROID_SDK_HOME%\tools
%JAVA_HOME%\bin
%ANDROID_SDK_HOME%\platform-tools
关于Android中键盘弹起顶起页面的问题
1.在config.xml中添加
<preference name="android-windowSoftInputMode" value="adjustPan" />
2.在platforms的AndroidManifest.xml中找到windowSoftInputMode,将其值改为adjustPan

浙公网安备 33010602011771号