2、vueJs基础知识02

vue生命周期:
  钩子函数:

  created -> 实例已经创建 √
  beforeCompile -> 编译之前
  compiled -> 编译之后
  ready -> 插入到文档中(相当于window.onload,页面初始化写在此处) √

  beforeDestroy -> 销毁之前
  destroyed -> 销毁之后

防止双大括号闪烁

  v-cloak  适用于大段落

  v-text   适用于小段文字

  v-html

计算属性

  angular中使用$scope.$watch进行监听变化

  vue中计算属性的使用:

   computed:{
        b:function(){    //默认调用get
            return 值(依赖于data中的数据)
        }
    }
    --------------------------
    完整用法(get和set方法)
    computed:{
        b:{
            get:function(){},
            set:function(){}
        }
    }

    * computed里面可以放置一些业务逻辑代码,一定记得return

vue实例简单方法:
  vm.$el -> 就是绑定实例的元素
  vm.$data -> 就是实例的data数据
  vm.$mount -> 手动挂载vue实例到元素上(同el配置项

  vm.$options -> 获取自定义属性
  vm.$destroy -> 销毁对象

  vm.$log(); -> 查看现在数据的状态

循环重复问题
  v-for="value in data"

  会有重复数据?
  track-by='索引' 提高循环性能

  track-by='$index/uid'

过滤器

  vue提供过滤器:
        capitalize    uppercase    currency....

        debounce    配合事件,延迟执行(加上延迟时间参数)
    数据(数组)配合使用过滤器:
        limitBy    限制几个(后面加参数)
        limitBy 参数(取几个)
        limitBy 取几个  从哪开始(两个参数)

        filterBy   过滤数据(后面的参数是包含的过滤条件,类似模糊查询)
        filterBy ‘谁’

        orderBy    排序(按首字母排序)
        orderBy 谁 1/-1 )(两个参数,按谁排,正倒序)
            1  -> 正序
            -1  -> 倒序

    自定义过滤器:  model ->过滤 -> view
        Vue类上有方法filter
        Vue.filter(name,function(input){
            //input是要处理的内容,后面也可以有传参数
        });

    时间转化器
    过滤html标记

    双向过滤器:*
    Vue.filter('filterHtml',{
                read:function(input){ // model->view
                    return input.replace(/<\/?.+?\/?>/g,'');
                },
                write:function(val){ //view -> model
                    return val;
                }
    });

    数据 -> 视图
    model -> view

    view -> model

自定义属性指令

  指令: 扩展html的功能语法 (可以做dom操作,拖拽也只能在指令里面实现)v-text , v-for, v-html

  定义方法:

    Vue.directive(指令名称,function(参数){
      this.el -> 原生DOM元素,vue实例的el
    });

  使用(可传参数):

    <div v-red="参数"></div>

    指令名称: v-red -> red(v-去掉,使用的时候必须以v-开头)

    * 注意: 必须以 v-开头

    拖拽实现代码:    

        Vue.directive('drag',function(){
       var oDiv=this.el; oDiv.onmousedown=function(ev){ var disX=ev.clientX-oDiv.offsetLeft; var disY=ev.clientY-oDiv.offsetTop; document.onmousemove=function(ev){ var l=ev.clientX-disX; var t=ev.clientY-disY; oDiv.style.left=l+'px'; oDiv.style.top=t+'px'; }; document.onmouseup=function(){ document.onmousemove=null; document.onmouseup=null; }; }; });
     //使用
     <div v-drag></div>

  自定义元素指令:(用处不大) 后面有组件代替
    Vue.elementDirective('zns-red',{
      bind:function(){
        this.el.style.background='red';
      }
    });

    使用:

    <zns-red></zns-red>

自定义键盘信息    

  vue提供的:

    @keydown.up
    @keydown.enter

  自定义例如@keydown.a/b/c....    用on绑定

    Vue.directive('on').keyCodes.ctrl=17;
    Vue.directive('on').keyCodes.myenter=13;

监听数据变化

  vm.$el/$mount/$options/....

  vm.$watch(name,fnCb); //浅度 name是数据的名字,fnCb是回调函数
  vm.$watch(name,fnCb,{deep:true}); //深度监视 引用类型的数据

posted @ 2019-06-14 17:23  极客小乌龟  阅读(180)  评论(0编辑  收藏  举报