vue混入

99 阅读1分钟

2.写在mixin.js

const mixin= {
    data() {
        return {
            name: '初始名字:张三',
            mixinMsg: 'mixinMsg'
        };
    },
    methods: {
        // 获取mixin中的msg
        getMixinMsg() {
            alert(
                '我是mixin.js中的getmsg方法,mixinmsg的数据是' + this.mixinMsg
            );
        },
        // 获取home中的homeMsg
        getHomeMsg() {
            alert(
                '我是mixin.js中的getHomeMsg方法,HomeMsg的数据是' + this.homeMsg
            );
        }
    },
    created() {
        alert('在mixin中vue的data、生命周期、方法等都可以使用');
    }
};

export default mixin;
  1. 写在home.vue中
<template>
  <transition name="fade">
    <div class="wrap">
      <h1>Home页面</h1>
      <h3 @click="goRule">跳转路由</h3>
      <!--主要内容-->
      <div class="content">
        <div @click="getMixinData">1.获取mixin中的name</div>
        <div @click="test">2.调用mixin.js中的getMixinMsg方法</div>
        <div @click="getHomeMsg">3.获取home.vue中的homeMsg</div>
        <div @click="changeMixinMsg">4.改变mixin中的name</div>
      </div>
    </div>
  </transition>
</template>
<script>
import mixin from '../js/mixin';
export default {
    mixins: [mixin],
    data() {
        return {
            homeMsg: 'homeMsg'
        };
    },
    methods: {
        getMixinData() {
            alert('mixin中的name为:' + this.name);
        },
        test() {
            this.getMixinMsg();
        },
        changeMixinMsg() {
            this.name = '李老二';
            alert('mixin中的name改变为:' + this.name);
        },
        goRule() {
            this.$router.push('/rule');
        }
    },
    created() {}
};
</script>
<style lang="less" scoped>
img {
    opacity: 0;
}
.wrap {
    // background-color: white;
    .content {
        div {
            height: 1rem;
            // width: 1rem;
            background-color: aqua;
            margin-top: 0.4rem;
            text-align: center;
            line-height: 1rem;
        }
    }
}
</style>