Mixins一般有兩種用途:
1. 在你已經寫好了構造器后,需要增加方法或者臨時的活動時使用的方法,這時用混入會減少源代碼的污染。
2. 很多地方都會用到的公用方法,用混入的方法可以減少代碼量,實現代碼重用。
# Mixins的基本用法
我們現在有個數字點擊遞增的程序,假設已經完成了,這時我們希望每次數據變化時都能夠在控制臺打印出提示:“數據發生變化”.
~~~
<body>
<div id="app">
<p>num:{{num}}</p>
<p>
<button @click="add">add</button>
</p>
</div>
</body>
<script type="text/javascript">
var addLog = {
updated: function () {
console.log("數據發生變化,變化成---" + this.num + ".");
}
};
var app = new Vue({
el: '#app',
data: {
num: 1
},
methods: {
add: function () {
this.num++;
}
},
//混入
mixins: [addLog]
});
</script>
~~~
# mixins的調用順序
從執行的先后順序來說,都是混入的先執行,然后構造器里的再執行,需要注意的是,這并不是方法的覆蓋,而是被執行了兩邊。
在上邊的代碼的構造器里我們也加入了updated的鉤子函數:
~~~
updated:function(){
console.log("構造器里的updated方法。")
}
~~~
這時控制臺輸出的順序是:
數據發生變化,變化成---2.
index.html:75 構造器里的updated方法。
PS:當混入方法和構造器的方法重名時,混入的方法無法展現,也就是不起作用
# 全局API混入方式
我們也可以定義全局的混入,這樣在需要這段代碼的地方直接引入js,就可以擁有這個功能了。我們來看一下全局混入的方法:
~~~
Vue.mixin({
updated:function(){
console.log('我是全局被混入的');
}
})
~~~
~~~
<body>
<div id="app">
<p>num:{{num}}</p>
<p>
<button @click="add">add</button>
</p>
</div>
</body>
<script type="text/javascript">
Vue.mixin({
updated: function () {
console.log('我是全局被混入的');
}
});
var app = new Vue({
el: '#app',
data: {
num: 1
},
methods: {
add: function () {
this.num++;
},
},
updated: function () {
console.log("構造器里的updated方法。")
},
});
</script>
~~~
PS:全局混入的執行順序要前于混入和構造器里的方法。
- 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