一 mixin混入偷懒技术

架子

<div id="app">
{{msg}}
</div> <script> let app = new Vue({
el:'#app',
data:{
msg:'晓强'
},
})
</script>

mixin偷懒

<div id="app">
{{msg}}            // 我在这就是想看 msg 的内容 所以 需要 mixin 就可以啦
</div> <script> const myMixin={
data(){
return{
msg:'myMixin偷懒'
}
}
}; let app = new Vue({
el:'#app',
data:{
title:'晓强'
},
mixins : [myMixin]
})
</script>

我们不仅可以偷懒数据 也可以偷懒方法

<div id="app">
{{msg}}
</div> <script> const myMixin={
data(){
return{
msg:'myMixin偷懒'
}
},
created(){
this.SayHello();
},
methods:{
SayHello(){
console.log('hello')
}
}
}; let app = new Vue({
el:'#app',
data:{
title:'晓强'        // 如果这个是 msg 就显示的是晓强
},
mixins : [myMixin]
})
</script>

二mixin混入技术应用

最先开始的架子

<div id="app">
{{msg}}
</div> <script>
// 模态框
const Modal={
template:`<div v-if="isShow"><h3>模态框组件</h3></div>`,
data(){
return{
isShow:false
}
},
methods:{
toggleShow(){
this.isShow = !this.isShow
}
}
}; // 提示框
const Tooltip={
template:`<div v-if="isShow"><h2>提示框组件</h2></div>`,
data(){
return{
isShow:false
}
},
methods:{
toggleShow(){
this.isShow = !this.isShow
}
}
};
let app=new Vue({
el:'#app',
data:{
msg:'mixin'
}
})
</script>

我们可以发现 上面 的模态框 和提示框 有重复的代码

提取

const toggleShow = {
data() {
return {
isShow: false
}
},
methods: {
toggleShow() {
this.isShow = !this.isShow
}
}
};

整体代码

<body>
<!--一个是模态框 一个是提示框 被弹出-->
<!--他们两个看起来不一样 用法不一样 但是逻辑是一样的(切换boolean)--> <div id="app">
{{msg}}
</div> <script>
/*
* 全局的mixin要格外小心 因为每个组件实例创建时都会被调用
* Vue.mixin({
* data(){
*
* }
* })
* */
const toggleShow = {
data() {
return {
isShow: false
}
},
methods: {
toggleShow() {
this.isShow = !this.isShow
}
}
}; // 模态框
const Modal = {
template: `<div v-if="isShow"><h3>模态框组件</h3></div>`,
mixins: [toggleShow]
}; // 提示框
const Tooltip = {
template: `<div v-if="isShow"><h2>提示框组件</h2></div>`,
mixins: [toggleShow] };
let app = new Vue({
el: '#app',
data: {
msg: 'mixin'
},
components: {
Modal,
Tooltip
},
template: ` <div>
<Modal ref="motai"></Modal>
<Tooltip ref="tooltip"></Tooltip>
<button @click="handleModel">模态框</button>
<button @click="handleTooltip">提示框</button>
</div>
`,
methods: {
handleModel() {
this.$refs.motai.toggleShow()
},
handleTooltip() {
this.$refs.tooltip.toggleShow()
}
}, })
</script>

最新文章

  1. Eclipse设置黑色主题
  2. capwap DTSL 加密分析
  3. 详解DHV:怎么具体展示高价值
  4. ZOJ 1016 Parencodings
  5. JavaScript事件委托的技术原理
  6. WinAPI——Windows 消息
  7. kibana 日志查看界面
  8. Moq的使用心得
  9. 3.SDL落地方案
  10. 小程序block标签配合if和else 和 动态修改标题栏
  11. redis初始化服务器
  12. 玩转BLE(2)_使用bluepy扫描BLE的广播数据
  13. Spring 整合 Quartz 实现动态定时任务
  14. Decision Trees:机器学习根据大量数据,已知年龄、收入、是否上海人、私家车价格的人,预测Ta是否有真实购买上海黄浦区楼房的能力—Jason niu
  15. 【ORACLE】SQL查询出每个组中的第一条记录
  16. [macOS] Error: /usr/local must be writable!&quot; (Sierra 10.12 )
  17. poj 1797 最大最小路段【dijkstra】 (经典)
  18. es6 Set 结合 Array.from 用法
  19. bzoj千题计划198:bzoj1084: [SCOI2005]最大子矩阵
  20. 关于C++中操作符重载的疑问 :四个运算符=, -&amp;gt;, [], ()不可以重载为全局函数(友员函数)

热门文章

  1. sql语句中,传入的参数带单引号的问题
  2. Tomcat能启动,无法访问方法,
  3. Django 3.0的新功能
  4. 图片转换到指定大小PDF
  5. greenplum 导入数据方式
  6. OBU设备非接触式读卡方案:SI522
  7. MySQL 中的数据库名称、数据表名称、字段名称
  8. tools.logback
  9. SpringBoo#Mybatis多个数据源配置,Sqlite&amp;Mysql
  10. js的执行和调试