Vue2.0全局API
来源:互联网 发布:宁德时代 知乎 编辑:程序博客网 时间:2024/06/06 05:24
1.0 Vue.directive
定义在全局的自定义指令,可以自己设置指令名称,指令逻辑,完成某种新功能 例如 <p v-colorful="colorName">我是自定义颜色指令<p>
<script> Vue.directive('colorful',function(el,binding){ el.style = 'color:'+ binding.value})</script>
<script> Vue.directive('colorful',function(el,binding){ el.style = 'color:'+ binding.value})</script>
这里的directive里的第一个参数是自定义指令的名称,第二个是一个函数,函数里面有三个参数,第一个是el代表的是自定义指令对应的标签dom元素,第二个参数bingding则是一个对象,console.log(binding)的话,有很多属性,例如:
binding.name-----该例子的colorful,bingding.value----colorName在Vue实例对象里面实际的值,bingding.expression----colorful的名字,第三个参数vnode:是Vue编译的虚拟节点
自定义指令里面也有钩子函数,即生命周期,一共五个,
1.bind 只调用一次,指令第一个绑定到元素时调用,用这个钩子函数可以定义一个绑定时执行一次的初始动作2.inserted:被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于document中)。
3.update:被绑定于元素所在的模板更新时调用,而无论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新。
4.componentUpdated:被绑定元素所在模板完成一次更新周期时调用。
5.unbind 至调用一个 指令与元素解绑时候调用
2.0 Vue.extend
拓展实例构造器,经常用在组件功能上,在其模版中遇到该组件名称作为标签的自定义元素时,会自动调用‘拓展实例构造器’来生产组件实例,并挂载到自定义元素上
下面举个例子
html中有一段<author></author>
script标签中代码
var authorExp = Vue.extend({ template: '<p><a :href="authorUrl">{{authorName}}</a></p>', data: function(){ return { authorUrl : 'http://www.baidu.com', authorName: 'BorderBox' }}})
这里需要注意的是与实例对象Vue不同,这里的data和Vue的实例对象里的data是不同的,这里要写个function里面return一个对象,才可以输入对应的值
这样还不行,还得将该拓展实例构造器new一下然后挂载到对应的自定义标签上才可以
new authorExp().$mount('author')
这里的$mount意思就是挂载的意思,后面传入的参数和jquery是一样的,如果是派生标签,例如<p></p>,只要$mount('p')即可,如果是类标签,$mount('.类名'),如果是id,$mount('#id')即可实现
3.0 Vue.set
这里的Vue.set的意思是构造器外部操作构造器内部的数据、属性或者方法,这个方法主要拿来解决javascript长期的一个问题,就是如果只处理数组的下标,或者是处理数组的长度的话,vue不会更新数据
这里举个例子
html里面
<ul id="app"> <li v-for="item in arr">{{item}}</li><ul>
<button onclick="change()">通过改变数组的下标</button>
script标签里面
<script> var app = new Vue({ el : '#app', data : { arr: ['aaa','bbb','ccc','ddd'] }
})
</script>
function change(){ Vue.set(app.arr,1,'eee')}
这里的就显示出Vue.set的价值出来了,如果change()里面直接加app.arr[1] = 'eee'的话,vue是不会更新数据的
4.0 Vue的生命周期
beforeCreate:function(){
console.log('1-beforeCreate 初始化之后');
},
created:function(){
console.log('2-created 创建完成');
},
beforeMount:function(){
console.log('3-beforeMount 挂载之前');
},
mounted:function(){
console.log('4-mounted 搭载之后');
},
beforeUpdate:function(){
console.log('5-beforeUpdate 数据更新前');
},
updated:function(){
console.log('6-updated 被更新后');
},
activated:function(){
console.log('7-activated');
},
deactivated:function(){
console.log('8-deactivated');
},
beforeDestroy:function(){
console.log('9-beforeDestroy 销毁之前');
},
destroyed:function(){
console.log('10-destroyed 销毁之后')
}
钩子能用到很多场景,比如说在beforeCreate加一个loading效果,再在mounted搭载之后取消loading效果,这样就可以提高用户体验,当然还有很多例子
5.0 template模版的使用
template是一个Vue实例对象的一个选项(例如data,el这都是选项)
1.0可以直接在template里面写模版
2.0还可以在<template id="id名"></template>里面写模版 template: '#id名'来实现
3.0可以在script标签里面加,<script type="x-template" id="id名"></script>里面加模版 template: '#id'来实现
阅读全文
0 0
- Vue2.0全局API
- vue2.0 全局组件和局部组件
- vue2.0对API的一些理解
- Vue2.0设置全局样式(less/sass和css)
- Vue2.0 --- vue-cli脚手架中全局引入JQ
- vue2.0中如何调用腾讯地图api?
- vue2.0填坑——百度地图API
- vue2.0中写一个能在外面访问的全局函数
- Vue2 全局-Vue.extend构造器拓展
- Vue2 全局-Vue.set更新vue数据
- vue2.0
- vue2.0
- vue2.0
- Vue2.x 之 基础API
- jQuery的全局API
- Redis API-全局命令
- vue 的全局API
- Vue全局API
- selenium 重要方法
- java 抽象类 http://www.nightsong.cc/index.php/post/198.html
- Go并发模型之生动我见(一)
- 【Git深入理解】实战经验总结
- java数据结构--链表
- Vue2.0全局API
- Linux的free命令输出详解
- [K8S] Zabbix 搭建
- Count The Pairs HDU
- SaaS厂商该如何才能“活得”更久?
- 说说 JSON 的基本语法以及与 JavaScript 的异同
- 单例模式
- Tensorflow 入门
- Android开发错误汇总