gpt4 book ai didi

javascript - VueJs 验证父组件中的子组件名称

转载 作者:太空宇宙 更新时间:2023-11-04 15:52:20 25 4
gpt4 key购买 nike

我有一个如下所示的父组件,它实现了动态组件切换。挑战是我想确保索引 0 处的 componentArgs name 数据有效。 this.components.indexOf(componentArgs[0]) > -1 行抛出 TypeError。

Parent.vue?e9d7:xx Uncaught TypeError: Cannot read property 'indexOf' of undefined

显然,this.components 不是访问父组件的正确方法。我该如何实现这个目标?

<template>
<component v-bind:is="currentForm" v-on:switchcomponent="switchComponent"></component>
</template>

<script>
import Login from '@/components/Login'
import Signup from '@/components/Signup'

export default {
name: 'Parent',
components: {
login: Login,
signup: Signup
},
data () {
return {
title: 'Sign Up or Login',
email: '',
currentForm: 'login'
}
},
methods: {
switchComponent: function (componentArgs) {
// componentArgs format: [name, title, email (Use empty string if N/A.)]
let name = 0
let title = 1
let email = 2
console.log('component: ' + componentArgs)

if (this.isValidComponent(componentArgs)) {
this.currentForm = componentArgs[name]
this.title = componentArgs[title]
this.email = componentArgs[email]
}
},
isValidComponent: function (componentArgs) {
let exactLength = 3

if (componentArgs.length === exactLength) {
console.log('components ' + this.components)
if (this.components.indexOf(componentArgs[0]) > -1) {
console.log('component exists')
return true
}

return false
}

return false
}
}
}
</script>

最佳答案

组件属性可以从

访问
this.$options.components

所以你的函数可以是

isValidComponent(name){
return !!this.$options.components[name];
}

其中 name 是组件的名称。我真的无法判断您在 componentArgs 中传递的内容。

Example .

关于javascript - VueJs 验证父组件中的子组件名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43011477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com