在 Vue 3 中,emit 是一种机制,用于在子组件中触发事件,并在父组件中监听这些事件
这是vue3的基础用法
父页面 @fenpeiUserYe 绑定selectUser方法
- <template v-if="route.query.menuType=='sfenpei'">
- <user-select @fenpeiUserYe="selectUser" :multi="true" :fenPeiSize="selectedRowKeys.length" :key="times" :fenPei="true" />
- </template>
- <script>
-
- const selectUser = (value) => {
- console.info(`~~~~~~~~~~~~selectUser~~~~~~~~~~~~~~`, value)
- console.info(`~~~~~~~~~~~~~~~~~~~~~~~~~~~`, selectedRowKeys.value)
- }
- </script>
子页面
子页面中通过fenpeiUserFu的方法调到 父页面中的fenpeiUserYe方法,从而调到selectUser 方法
- <user-select-modal :inSuperQuery="inSuperQuery" :multi="multi" :getContainer="getContainer" @register="registerModal" @selected="onSelected" @fenpeiUserSun="fenpeiUserFu" :izExcludeMy="izExcludeMy"></user-select-modal>
-
-
- <script lang="ts">
- export default defineComponent({
- name: 'UserSelect',
- components: {
- PlusOutlined,
- UserSelectModal,
- SelectedUserItem,
- },
- props: {
- store: {
- type: String,
- default: 'id',
- },
- value: {
- type: String,
- default: '',
- },
- multi: {
- type: Boolean,
- default: false,
- },
- getContainer: {
- type: Function,
- default: null,
- },
- // 是否作为查询条件
- query:{
- type: Boolean,
- default: false,
- },
- //最多显示几个人员-query为true有效
- maxCount:{
- type: Number,
- default: 2
- },
- disabled:{
- type: Boolean,
- default: false,
- },
- fenPei:{
- type: Boolean,
- default: false,
- },
- fenPeiSize:{
- type: Number,
- default: 0
- },
-
-
- //是否排除我自己
- izExcludeMy:{
- type: Boolean,
- default: false,
- },
- //是否在高级查询中作为条件 可以选择当前用户
- inSuperQuery:{
- type: Boolean,
- default: false,
- }
- },
- emits: ['update:value', 'change', 'fenpeiUserYe'],
- emits: ['update:value', 'change', 'fenpeiUserYe'],
- setup(props, { emit }) {
-
- const fenpeiUserFu = (arr) => {
- emit('fenpeiUserYe', arr)
- }
-
- }
-
-
- }
- </script>