作用
: 处理公共的逻辑,跟视图没有关系概念
:把混入对象中的东西(data,生命周期钩子、方法)等混合到我们自身组件中注意事项
:写法
: 写在我们项目中可以新建一个文件夹叫做minxins,再在这个文件夹新建一个.js或者.vue后缀的文件<script>
export default {
}
script>
步骤
<script>
export default {
methods: {
//改变状态
async changeStatus(url, id) {
const res = await this.$axios.post(url, { id });
if (res.data.code == 200) {
this.$message({
type: "success",
message: "更新状态成功"
});
//刷新当前页面
this.getListData();
} else {
this.$message.error(res.data.message);
}
},
//删除
del(url, id) {
this.$confirm(`确定删除该用户吗?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(async () => {
const res = await this.$axios.post(url, { id });
console.log(res);
// 成功就弹出提示框
if (res.data.code == 200) {
this.$message({
type: "success",
message: "删除成功!"
});
// 并且要重新查询,展示第一页的数据内容
this.search();
}
})
.catch(() => {});
}
}
};
</script>
3、在 user/index.vue 中去使用混入对象中抽取的方法,进行状态的更改
第一步导入混入对象: import common from ‘@/mixins/common’
第二步在自身组件中进入混入: mixins: [ common ]
4、直接调用混入对象中的方法
<el-button
@click="changeStatus('/user/status',scope.row.id)"
:type="scope.row.status === 0 ? 'success' : 'info'"
>{{ scope.row.status === 0 ? "启用" : "禁用" }}el-button
>
5、之前自己在组件中写的方法,大家要记得把它给它注释起来
理解
: 相当于在运行的时候,把代码直接copy进来其实v-model就相当于是v-bind(从模型到视图)+input事件(从视图到模型)
<template>
<div>
测试
<input type="text" :value="msg" @input="changeValue" />
div>
template>
<script>
export default {
name: "TestVModel",
data() {
return {
msg: "你好鸭"
};
},
methods: {
changeValue(e) {
this.msg = e.target.value;
}
}
};
script>
<style>
style>
parent.vue组件:
<template>
<div>
我是父组件
<br /><hr>
<child v-model="url"/>
div>
template>
<script>
import Child from "./child";
export default {
components: {
Child
},
data() {
return {
url:'www.baidu.com'
};
}
};
script>
<style>
style>
child.vue组件:
<template>
<div>
我是子组件<br>
从父组件传递过来的值:{{value}}
<br>
<button @click="changeValue">点我变urlbutton>
div>
template>
<script>
export default {
//接收父组件传递过来的值
props:['value'],
methods: {
changeValue(){
this.$emit('input','www.jd.com')
}
},
}
script>
<style>
style>