[TOC]
# 什么是全局API
全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive。说的简单些就是,在构造器外部用Vue提供给我们的API函数来定义新的功能。
# vue.directive自定义指令
我们也可以定义一些属于自己的指令,比如我们要定义一个v-jdxia的指令,作用就是让文字变成绿色。
~~~
<div id="app">
<div v-jdxia="color">{{num}}</div>
</div>
<script type="text/javascript">
//el就是dom元素
//binding是js对象,可以打印出来看下
//binding.value就是获取v-jdxia=的值,而这个值和下面的那个是同步的
//里面的匿名函数是可以传递3个参数,这边就先写2个
Vue.directive("jdxia", function (el, binding) {
el.style = "color:" + binding.value;
});
var app = new Vue({
el: '#app',
data: {
num: 10,
color: 'red',
}
})
</script>
~~~
# 自定义指令中传递的三个参数
el: 指令所绑定的元素,可以用来直接操作DOM。
binding: 一个对象,包含指令的很多信息。
vnode: Vue编译生成的虚拟节点
# 自定义指令的生命周期
自定义指令有五个生命周期(也叫钩子函数),分别是 bind,inserted,update,componentUpdated,unbind
bind:只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个绑定时执行一次的初始化动作。
inserted:被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于document中)。
update:被绑定于元素所在的模板更新时调用,而无论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新。
componentUpdated:被绑定元素所在模板完成一次更新周期时调用。
unbind:只调用一次,指令与元素解绑时调用。
~~~
<body>
<div id="app">
<div v-jdxia="color">{{num}}</div>
</div>
<!-- //要解绑了就不能在上面里面写 -->
<p>
<button onclick="unbind()">解绑</button>
</p>
</body>
<script type="text/javascript">
function unbind() {
//$destroy这个是vue提供给我们的
app.$destroy();
}
//el就是dom元素
//binding是js对象,可以打印出来看下
//binding.value就是获取v-jdxia=的值,而这个值和下面的那个是同步的
Vue.directive("jdxia", {
bind: function (el, binding) { //被绑定
console.log('1 - bind');
el.style = "color:" + binding.value;
},
inserted: function () { //绑定到节点
console.log('2 - inserted');
},
update: function () { //组件更新
console.log('3 - update');
},
componentUpdated: function () { //组件更新完成
console.log('4 - componentUpdated');
},
unbind: function () { //解绑
console.log('5 - unbind');
}
});
var app = new Vue({
el: '#app',
data: {
num: 10,
color: 'red',
}
})
</script>
~~~
- HTML
- 标签
- 超链接
- 列表
- 表格和表单
- h5新增标签
- 快捷方式
- 标签包含
- CSS
- 选择器
- 行内,块元素,链接
- css三大特性
- 盒子模型
- 定位
- css可见性
- emment书写
- 文本元素
- 外观属性
- 背景
- 浮动
- ps
- 用户界面样式
- 显示和隐藏
- 过渡
- 2D,3D变形
- 动画animation
- 伸缩布局(CSS3)
- BFC
- 优雅降级和渐进增强
- 3D旋转
- 双飞翼和圣杯
- JS基础
- 输出消息的几种方式
- 数据类型
- Date对象
- Math对象
- Array对象
- 字符串常用方法
- 数据类型转换
- 等号运算
- 代码调试
- 数组
- 函数
- WebAPI
- webapi简介
- 获取页面元素
- 事件
- 属性操作
- 创建元素
- 节点操作
- 事件详解
- BOM
- 位置相关属性
- 拖拽弹窗
- 弹出层加遮罩
- ES6
- let和const
- 解构表达式变化
- 函数优化
- map和reduce
- nrm
- npm
- npm基础
- package.json
- 淘宝镜像
- webpack
- 介绍
- 多入口文件(Multiple entry files)
- Webpack CSS loader加载器
- webpack Image loader 加载图片
- uglify-js压缩打包JS
- webpack构建本地服务器
- vue内部指令
- v-if,v-show,v-for
- v-text,v-html
- v-on
- v-model
- v-bind
- v-pre,v-cloak,v-once
- vue全局api
- Vue.directive 自定义指令
- vue.extend构造器的延伸
- vue.set全局操作
- Vue的生命周期(钩子函数)
- Template 制作模版
- Component 初识组件
- Component 组件props 属性设置
- Component 父子组件关系
- Component 标签
- vue选项
- propsData Option全局扩展数据传递
- computed Option 计算选项
- Methods Option 方法选项
- watch选项监控数据
- Mixins 混入选项操作
- Extends Option 扩展选项
- delimiters 选项
- vue实例和内置组件
- 实例属性
- 实例方法
- 实例事件
- 内置组件 -slot
- vue-cli
- vue-cli介绍
- 项目目录结构
- vue-cli模板
- vue-router
- 简介
- 配置子路由
- 参数传递
- 单页面多路由区域操作
- url传递参数
- vscode