JobPlus知识库 IT 软件开发 文章
vue.js1.0笔记

1.基本格式

以json的形式、将数据(支持所有格式)挂载在vue的data上、方法挂载在vue的methods上。

new Vue({

     el:'#box',

      //数据

     data:{

           key:'welcome vue',

           arr:['apple','banana','orange','pear'],

           json:{a:'apple',b:'banana',c:'orange'}

     }

    //方法

    methods:{

          add:function(){

          //push 添加元素

                this.arr.push('tomato');

          }

    }

    //计算属性

    computed:{

     //默认为get方法

         b:function(){

             //业务逻辑代码

             return 2;

        }

      //内部可以实现set、get两个方法

         c:{

             get:function(){

                 return this.a+2;

             },

             set:function(val){

                this.a=val-2;

             }

         }

     },

     components:{ //局部组件---详见组件

        'my-aaa':Aaa

     }   

});

//钩子函数(生命周期)

created:function(){

     alert('实例已经创建');

}

//自定义过滤器

Vue.filter('toDou',function(val,a,b){

      return val<10?'0'+val:''+val;

});

//自定义指令

Vue.directive('red',function(){

      this.el.style.background='red';

});

2.常用指令

双向数据绑定v-model:"key"

 <input type="text" v-model="key">

将{key:value}于input双向绑定。

改动时其余部分的{{key}}也会随之替换。


循环v-for

<li v-for="value in arr">

   {{value}}

</li>

value为内容、$index为索引、$key为字典(json)独有。

//针对json格式的数据还有以下写法 

<li v-for="(k,v) in json">

     {{k}}   {{v}} 

</li>

k为key、v为value

重复数据有事不予展示:track-by="$index/uid"添加索引

<li v-for="(k,v) in json" track-by="$index">

     {{k}}   {{v}} 

</li>


显示隐藏v-show

data:{ //数据

    a:true

 }

<input type="button" value="按钮" v-on:click="a=false">

<div style="width:100px; height:100px; background: red" v-show="a">

v-show:true/false


false显示

条件渲染v-if

<div id="app" >

   <p v-if='ture'>{{message}}</p>

</div>

v-if:true/false


true显示

区别

v-if是真实的条件渲染、当进行条件切换时、它会销毁和重建条件块的内容,并且它支持<template>语法

v-show的条件切换时基于css的display属、所以不会销毁和重建条件块的内容


当你频繁需要切换条件时,推荐使用v-show;否则使用v-if;

v-else

v-else必须与v-show/v-if连用

当其处在非渲染状态下执行v-else中的代码块


事件绑定v-on:

<input type="button" value="按钮" v-on:click="show()">

click可以换成任意事件

v-on:click与@click等价

自定义指令:directive


声明为red、调用时调用v-red

无参数

v-red

Vue.directive('red',function(){

    //此处的this.el与vm.$el为同一个DOM元素。但是写法不同需要区分

    this.el.style.background='red';

});

有参数

v-changeColor="'blue'"/"myColor"

Vue.directive('changeColor',function(color){

    this.el.style.background=color;

});

元素指令

Vue.elementDirective('zns-red',{

    bind:function(){

        this.el.style.background='red';

    }

});

<div id="box">

    <zns-red></zns-red>

</div>


事件对象

<input type="button" value="按钮" @click="show($event)">

$event结构体内部与原生相同


阻止事件冒泡

a).方法内部: ev.cancelBubble=true; (原生js)
b).@click.stop (vue功能)


阻止默认行为

a). ev.preventDefault(); (原生js)
b). @contextmenu.prevent (vue功能)//contextmenu为右键点击


键盘事件

  • 默认
    @keydown    ------      $event    ev.keyCode
    @keyup
    回车 (a). @keyup.13(b). @keyup.enter
  • 自定义键盘事件Vue.directive('on').keyCodes.ctrl=17;   Vue.directive('on').keyCodes.myenter=13; <input type="text" @keydown.myenter="show">

  • 属性

普通属性

<im src="{{url}}" alt=""> 数据双向绑定,但是会报一个404错误
<im v-bind:src="url" alt="">属性绑定,不会发404请求
v-bind:src="url"可以简写成:src="url"

1、

:class="[red]"    red是数据   :class="[red,b,c,d]"

2、

:class="{red:a, blue:false}"        a=true

3、

:class="json"  data:{      json:{red:true, blue:false}  }style :style="json" backgroundColor:'gray'  //复合样式,采用驼峰命名法


模板

{{msg}}----数据更新模板变化
{{*msg}}----数据只绑定一次
{{{msg}}}----HTML转意输出(< h3>aaa</ h3>)


过滤器

过去模板中的内容并加以改变

{{msg| filterA}} {{msg| filterA | filterB}}

uppercase --- 大写
lowercase --- 小写
capitalize --- 首字母大写
currency --- 美元符号
currency "人民币:" --- 自定义参数
debounce 2000--- 配合事件,延迟执行

  • 数组配合使用过滤器:
    limitBy 取几个/取几个  从哪开始
    filterBy'关键词' 过滤数据
    orderBy 排序
    json 展示json全部数据
          1  -> 正序
          -1  -> 倒序
  • 自定义过滤器

    Vue.filter('toDou',function(val,a,b){    return val<10?'0'+val:''+val; }); {{a | toDou 1 2}}

禁止{{花括号}}显示

  • v-cloak<style>  [v-cloak]{       display:none;    } </style> <div v-cloak> </div>
  • v-text:直接输出 <span v-text="msg"></span>
  • v-html:转译输出 <span v-html="msg"></span>


交互


get


获取普通文本数据

this.$http.get('a.txt').then(function(res){

  alert(res.data);

},function(res){

  alert(res.status);

});

给服务发送数据

this.$http.get('url',paramsDic).then(function(res){

    alert(res.data);

},function(res){

    alert(res.status);

});

post


this.$http.post('post.php',{

    a:1,

    b:20

},{

    emulateJSON:true

}).then(function(res){

    alert(res.data);

},function(res){

    alert(res.status);

});

jsonp


jsonp采用的get方式


this.$http.jsonp(''https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su'',{

    word:'a'

},{

    //callback名字,默认名字就是"callback"

    jsonp:'cb'

}).then(function(res){

    alert(res.data.s);

},function(res){

    alert(res.status);

});

简写

this.$http({

    url:地址

    data:给后台提交数据,

    //method默认为get

    method:'get'/'post'/'jsonp'

    //如果method改为jsonp、需要声明cbName

    jsonp:'cb' //cbName

}).then(function(res){

     //成功

},function(res){

    // 失败

});

生命周期(钩子函数)

1.0


created -> 实例已经创建

beforeCompile -> 编译之前

compiled -> 编译之后

ready -> 插入到文档中 √

beforeDestroy -> 销毁之前

destroyed -> 销毁之后


2.0


beforeCreate ->实例初始化之后。

created -> 实例已经创建。

beforeMount -> 编译之前

mounted -> 编译之后 √

activated -> keep-alive 组件激活时调用。

deactivated -> keep-alive 组件销毁时调用。

beforeUpdate -> 数据更新之前

update -> 数据更新之后

beforeDestroy -> 销毁之前

destroyed -> 销毁之后


通常在√时、vue.js已可以使用


created:function(){

     alert('实例已经创建');

}

计算属性:computed

computed:{

 //默认为get方法

      b:function(){

         //业务逻辑代码

         return 2;

      }

//内部可以实现set、get两个方法

      c:{

        get:function(){

           return this.a+2;

              },

        set:function(val){

            this.a=val-2;

        }

      }

 }


{{b}}

计算属性必须有返回值

vue实例简单方法

vm.$el -> 获取元素


 vm.$el.style.background='red';>

vm.$data -> 获取data数据对象


 console.log(vm.$data.a);

vm.$mount -> 手动挂载vue程序


 vm.$mount('#box');

vm.$options -> 获取自定义属性


 vm.$options.customMethods.show();

vm.$destroy -> 销毁对象


 vm.$destroy

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

vm.$watch ->监听数据变化


浅度监听

vm.$watch('a',function(){

     this.b=this.a+100;

});

深度监听

vm.$watch('json',function(){

     alert('发生变化了');

},{deep:true});



如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
340人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序