1.axios赋值的问题
axios的赋值问题描述:前后数据对接,使用nuxt整合的axios,使用vue中的钩子函数在页面组件挂载完之后,向后台发送一个get,并将返回的数据赋值给data中定义的属性this.chart
后端报错:this.chart这一步赋值失败
原因:在请求执行成功后执行回调函数中的内容,回调函数处于其它函数的内部this不会与任何对象绑定,为undefined
解决方案:
- 将指向vue对象的this赋值给外部方法定义的属性,然后再内部方法中使用该属性
- 使用箭头函数
2. arr.unshift(ele1,ele2)
在数组的开头添加一个或者多个元素
- 返回值是 长度
- 在原来的数组中进行修改
-
unshiift()
无法在Internet Explore中正确的工作
z-index
不起作用
z-index无效的情况:
- 父标签
position
属性为relative
:解决方法:改为absolute
- 问题标签
position
属性为static
: 解决方法:浮动元素添加position:absolute
或position:relative
- 问题标签含有
float
属性 :解决方法:去掉浮动
DOM获取位置信息
-
clientHeight
和clientWidth
用于描述元素内尺寸,是指 元素内容+内边距 大小,不包括边框(IE下实际包括)、外边距、滚动条部分 -
offsetHeight
和offsetWidth
用于描述元素外尺寸,是指 元素内容+内边距+边框,不包括外边距和滚动条部分 -
clientTop
和clientLeft
返回内边距的边缘和边框的外边缘之间的水平和垂直距离,也就是左,上边框宽度 -
offsetTop
和offsetLeft
表示该元素的左上角(边框外边缘)与已定位的父容器(offsetParent对象)左上角的距离 -
offsetParent
对象是指元素最近的定位(relative,absolute)祖先元素,递归上溯,如果没有祖先元素是定位的话,会返回null
vue
获取事件对象
methods:{
say:function(msg,event){
var el = event.currentTarget;
}
}
将一个数组分隔成每n个一组
//slice: 返回一个新数组,包含选定的元素
var data = [
{name:'Liming',age:'25'},
{name:'Liming',age:'25'},
{name:'Liming',age:'25'},
]
var result = [];
for(var i=0;i<data.length;i+=n){
result.push(data.slice(i,i+n)); //每n个为一组
}
清空数组的三种方式
-
arr.splice(0,arr.length)
splice方法向/从数组中添加/删除项目,然后返回被删除的项目;会改变原数组 arr.length=0
arr = []
判断数据类型
-
是否为数组类型
typeof obj === 'object' && obj.constructor ===Array
-
是否为字符串
typeof str === 'string' && str.constructor === String
-
是否为数值类型
typeof obj === 'number' && obj.constructor === Number
-
是否为日期类型
typeof obj ==='object' && obj.constructor === Date
-
是否为函数
typeof obj ==='function' && obj.constructor === Function
-
是否为对象
typeof obj === 'object' && obj.constructor === Object
子组件监听父组件传入的值的变化
watch:{}
或者 vm.$watch()
watch:{
a:function(){},
b:'someMethodName',
c:{
handler:function(){},
deep:true
}
}
vm.$watch('a,b,c' ,function(){})
Axios不能向后台请求xml的问题
解决方法:使用原生ajax
Object.key(obj)
返回给定对象的所有可枚举属性的字符串数组, 顺序与手动遍历该对象属性一致。、
跳转外链及<nuxt-link>
-
<nuxt-link>
可以根据vue路由跳转到本项目内部的组件地址; - 跳转外链,采用
//html中:
@click="See(url)"
//vue实例中
methods:{
See : function(url){
window.location.href= url; // 跳转外链
}
}
this.searchBox.key
获取input的值
Vuex
使用场景
只有在组件中需要共享的数据才使用vuex,不要什么场合都用
iframe
监听鼠标点击事件
- 获取
iframe
所属的document对象docuement.getElementById('iframe-id').contentDocument
-
iframe
中内容单独加载,而加载未完成是无法获取iframe
元素的document
对象
var iframe = document.getElementById('my-iframe');
iframe.onload = function() {
iframe.contentDocument.onclick = function () {
var sidebar = document.getElementById('sidebar');
if (sidebar.style.display == 'block') sidebar.style.display = 'none';
};
}
原生js事件绑定和事件移除
/**
* @description 事件绑定,兼容各浏览器
* @param target 事件触发对象
* @param type 事件
* @param func 事件处理函数
*/
function addEvents(target, type, func) {
if (target.addEventListener) //非ie 和ie9
target.addEventListener(type, func, false);
else if (target.attachEvent) //ie6到ie8
target.attachEvent("on" + type, func);
else target["on" + type] = func; //ie5
};
/**
* @description 事件移除,兼容各浏览器
* @param target 事件触发对象
* @param type 事件
* @param func 事件处理函数
*/
function removeEvents(target, type, func){
if (target.removeEventListener)
target.removeEventListener(type, func, false);
else if (target.detachEvent)
target.detachEvent("on" + type, func);
else target["on" + type] = null;
};
网友评论