本篇文章只是个人的项目记录
mixin的解析就不在多解释
需求:路由跳转会拼接关键词,详情页面和编辑用的是同一个页面,只是对表单进行了禁用,以及对提交的按钮进行了控制,但是该用户没有编辑内容的权限,所以路由跳转并不严谨(如果路由传参关键词id等需要响应式,不能用mixin的情况,就需要传参加密!!! 参考地址:Vue之路由的query传参加密)
传递关键词的方法有四种,主要讲mixin的项目使用。
1- 父组件用v-bind来传递,子组件用props来接收(不适用于路由跳转并且如果组件层级深的话只能用props一层一层传递)
2- provide和inject(大范围有效的 props)
官网上说provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的 property 还是可响应的。
我理解的意思就是说如果要实现父子组件响应,父组件传递的数据类型必须是对象Object,子组件接收的数据类型必须是对象Object,其他数据类型都是不好使的。
3- 用vuex的状态管理,eventbus组件通信
4- mixin公共的组件,在mixin里设置关键词,路由名称创建的时候关键词(详情detail)(编辑edit)
mixin.js
data () {
return {
disabled: false
}
}
created () {
if (this.$route.name === 'detail') this.disabled = true
}
page1.vue
<template>
<el-input :disabled="disabled"></el-input>
</template>
import mixin from './mixin';
export default {
mixins: [mixin ]
}