[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