vue怎么把api 挂载到全局_vue 的全局API

本文介绍了如何在Vue中挂载API,包括自定义指令的使用,如Vue.directive,以及生命周期钩子函数的应用。还讨论了Vue.extend用于扩展实例构造器,Vue.set用于构造器外部操作数据,以及组件的创建、属性定义和父子组件的关系管理。内容覆盖了Vue的全局API、模板制作、组件和指令的区别,并提供了多个示例。
摘要由CSDN通过智能技术生成

vue 的全局API:在构造器外部用vue提供给我们的API函数来定义新的功能

vue2.0_Vue.directive自定义指令

自定义的指令:

Vue.directive('');自定义指令中传递的3个参数:

el:指令所绑定的元素,可以用来直接操作DOM。

binding:一个对象,包含指令的很多信息。

vnode:Vue编译生成的虚拟节点

Vue.directive('dmeo',function(el,binding,vnode){

el.style='color:'+binding.value;

});

var app=new Vue({

el:'#app',

data:{

num:10,

color:'green'

},

自定义指令的生命周期:bind 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个绑定时执行一次的初始化动作inserted 被绑定元素插入父节点时调用update 被绑定于元素所在的模板更新时调用,而无论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新componentUpdated:被绑定元素所在模板完成一次更新周期时调用。unbind:只调用一次,指令与元素解绑时调用解绑:

在#app的作用域外面声明自定义指令,在外面进行解绑

解绑

function unbind(){

app.$destroy();

}

bind:function(){

//被绑定

console.log('1 - bind');

},

inserted:function(){

//绑定到节点

console.log('2 - inserted');},

update:function(){

//组件更新

console.log('3 - update');

},

componentUpdated:function(){

//组件更新完成

console.log('4 - componentUpdated');

},

unbind:function(){

//解绑

console.log('1 - bind');

vue2.0_Vue.extend扩展实例构造器

在构造器外面,构造一个模板$mount()手动挂载

Vue.extend

var authorExtend = Vue.extend({

data:function(){

return{

authorName:'JSPang',

authorUrl:'http://jspang.com'

}

}

});

console.log(new authorExtend());

new authorExtend().$mount('author');

vue2.0_Vue.set全局操作引用构造器外部数据

//在构造器外部声明数据

var outDate={count:1,goodName:'car'};

var app = new Vue({el:'#app'//引用外部数据data:outDate})

在外部改变数据的三种方法:

操作外部数据

1.用Vue.set改变function add(){vue.set(outData,'count',4);}

2.用Vue对象的方法添加:

app.count++;

3.直接操作外部数据outData.count++;

为什么要有Vue.set的存在?由于JavaScript的限制,Vue不能自动检测以下变动的数组当你利用索引直接设置一个项时,vue不会为我们自动更新。当你修改数组的长度时,vue不会为我们自动更新这时我们的界面是不会自动更新数组的,我们需要用Vue.set(app.arr,1,'ddd') 来设置改变,vue才会给我们自动更新,这就是Vue.set存在的意义。

vue2.0_生命周期(钩子函数)

Vue一共有10个生命周期函数,我们可以利用这些函数在vue的每个阶段都进行操作数据或者改变内容。

vue2.0_Template模板制作模板

1、在构造器里面直接建模版template:`我是选项模板`

2.在标签里面建模版

3.使用script标签写模板,可以外部引入

var app = new Vue({

el:'#app',

data:{

message:"hello Vue!"

},

template:'#demo3'

})

vue2.0_component_1Component 组件自定义组件

html里面不存在的标签全局的定义组件:

Vue.component('jspang',{

template:`我是全局的jspang组件

`})

注意:我们在js里注册一个组件,在html中调用它,这就是一个简单的一个组件的编写方法,并且它可以放到多个构造器的作用域里面局部的定义组件:

在构造器里面定义

var app = new Vue({

el:'#app',

components:{"panda":{template:'局部注册的panda标签'}

}

})

注意:在构造器里的components是加s的,而全局注册是不加s的组件和指令有什么区别:组件注册的是一个标签,而指令注册的是已有标签里的一个属性,在实际开发中我们还是用组件比较多,指令用的比较少,因为指令看起来封装的没那么好

vue2.0_component_2 定义属性并获取属性值

1.定义属性我们需要用到props选项,加上数组形式的属性名称

var app = new Vue({

el:'#app',

compoents:{'

panda':{template:`panda from {{here}}`,props:['here']}

}

})

2.属性中带'-' 的处理方式:使用小驼峰值进行换掉

3.在构造器里向组件中传值v-bind:xxxx

例子:

var app = new Vue({

el:'#app',

data:{  message:'sichun'},

components:{"panda":{template:`panda from{{here}}`

//这里面的props后面跟的是数组

props:['here']

}

}

})

vue2.0_component_3Component 父子组件关系

1、构造器外部写局部注册组件

var pandaComponent= {template:`Panda from china!`}

//构造器

var app = new Vue({

el:'#app',

components:{'panda':pandaComponent}

})

2.父子组件的嵌套var city= {template:`Panda from sichun!`}

var pandaComponent= {template:`Panda from china!`

//直接在声明里面嵌套一个子组件

components:{'city':city}}

//构造器

var app = new Vue({el:'#app',components:{'panda':pandaComponent}

})

vue2.0_component_4

var componentA={

template:`I'm componentA`        }

var componentB={            template:`I'm componentB`       }

var componentC={            template:`I'm componentC`        }

var app=new Vue({

el:'#app',

data:{

who:'componentA'

},

components:{

"componentA":componentA,

"componentB":componentB,

"componentC":componentC,

},

methods:{

changeComponent:function(){

if(this.who=='componentA'){

this.who='componentB';

}else if(this.who=='componentB'){

this.who='componentC';

}else{

this.who='componentA';

}

}

}

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值