Vue爬坑之旅

2018-08-21  本文已影响0人  小淘气_嘻

1.axios赋值的问题

axios的赋值问题

描述:前后数据对接,使用nuxt整合的axios,使用vue中的钩子函数在页面组件挂载完之后,向后台发送一个get,并将返回的数据赋值给data中定义的属性this.chart
后端报错:this.chart这一步赋值失败

原因:在请求执行成功后执行回调函数中的内容,回调函数处于其它函数的内部this不会与任何对象绑定,为undefined

解决方案:

外部赋值 箭头函数

2. arr.unshift(ele1,ele2)在数组的开头添加一个或者多个元素

z-index不起作用

z-index无效的情况:

DOM获取位置信息

  1. clientHeightclientWidth用于描述元素内尺寸,是指 元素内容+内边距 大小,不包括边框(IE下实际包括)、外边距、滚动条部分
  2. offsetHeightoffsetWidth用于描述元素外尺寸,是指 元素内容+内边距+边框,不包括外边距和滚动条部分
  3. clientTopclientLeft返回内边距的边缘和边框的外边缘之间的水平和垂直距离,也就是左,上边框宽度
  4. offsetTopoffsetLeft表示该元素的左上角(边框外边缘)与已定位的父容器(offsetParent对象)左上角的距离
  5. 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个为一组
}

清空数组的三种方式

判断数据类型

子组件监听父组件传入的值的变化

watch:{} 或者 vm.$watch()

watch:{
a:function(){},
b:'someMethodName',
c:{ 
    handler:function(){},
    deep:true
  }
}

vm.$watch('a,b,c' ,function(){})

Axios不能向后台请求xml的问题

解决方法:使用原生ajax

原生ajax获取

Object.key(obj)

返回给定对象的所有可枚举属性的字符串数组, 顺序与手动遍历该对象属性一致。、

跳转外链及<nuxt-link>

//html中:
@click="See(url)"
//vue实例中
methods:{
    See : function(url){
          window.location.href= url;         // 跳转外链
    }
}

this.searchBox.key

获取input的值

Vuex使用场景

只有在组件中需要共享的数据才使用vuex,不要什么场合都用

iframe监听鼠标点击事件

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;
};
上一篇 下一篇

猜你喜欢

热点阅读