Vue.js 概率始终未定义

Posted

技术标签:

【中文标题】Vue.js 概率始终未定义【英文标题】:Vue.js prob is always undefined 【发布时间】:2022-01-18 04:24:00 【问题描述】:

您好,我是 Vue 新手并尝试使用 probs,但在我的组件中我无法使用 prob-data,因为 probs 始终未定义并且在 Vue-Debugger 中显示为 $attrs。

我的计划: 我想使用 TabWrapper 组件来填充 Modal-Component-Slot。有一个用于多个 .现在我想通过 probs 将数据传递给定义“标题”和选定状态,默认值为 false!然而,在这里,我的问题显然无法识别,因为它们在 Vue 调试器中显示为“attr”。

Vue-Debugger-Screenshot

parent.vue

.<template>
  <div class="options">
    <div class="textbox">
      <!-- todo -->
      <p class="login" @click="$refs.modalName.openModal()">Login / Registrieren</p>
      <p class="settings">Einstellungen</p>
      <p class="darkmode">Dunkles Design
        <input @click="toggleTheme" type="checkbox" name="switch" id="switch">
        <label for="switch"></label>
      </p>
    </div>
  </div>

  <!-- User-Settings-Modal -->
  <BasicModal ref="modalName">

    <template v-slot:header>
        <h1>Modal title</h1>
    </template>

    <template v-slot:body>

      <TabWrapper>
        <Tab title="Title-A" :selected="true">
           Demo Content: A
        </Tab>
        <Tab title="Title-B" >
           Demo Content: B
        </Tab>
        <Tab title="Title-C">
           Demo Content: C
        </Tab>
        <Tab title="Title-D">
           Demo Content: D
        </Tab>
      </TabWrapper>

    </template>
    
  </BasicModal>

</template>

<script>
import BasicModal from '@/components/Ui/BasicModal.vue'
import TabWrapper from '@/components/Ui/TabWrapper.vue'
import Tab from '@/components/Ui/Tab.vue'

export default 
  components: 
    BasicModal,
    TabWrapper,
    Tab
  ,
  data() 
    return 
      theme: ''
    
  ,
  methods: 
    toggleTheme() 
      this.theme = this.theme == 'darkMode' ? 'root' : 'darkMode'
      document.documentElement.setAttribute('data-theme', this.theme);
    
  

</script>

tabwrapper.vue

<template>
<div class="tabs-wrapper">
  <div class="tabs-navigation">
    <ul>
      <li v-for="(tab, index) in tabs" :key="index">
        <div class="tabs-navigation-item"
            :class=" 'is-active': tab.isActive "
            @click="selectedTab(tab)">

             tab.name 

        </div>
      </li>
    </ul>
  </div>
    <div class="tabs-content">
        <slot></slot>
    </div>
</div>

</template>

<script>
export default 
  data() 
    return 
      tabs: []
    
  ,
  methods: 
    selectedTab(selectedTab) 
      this.tabs.forEach(tab => 
        tab.isActive = (tab.name === selectedTab.name);
      );
    
  

</script>

tab.vue

<template>
    <div v-show="isActive">
        <slot></slot>
    </div>
</template>

<script>
    export default 
        probs: 
            title:  required: true,
            selected: 
                type: Boolean,
                default: false
            
         
        ,
        data() 
            return 
                 isActive: this.selected,
                 name: this.title
            
        ,
        created() 
            console.log(this.title)
            this.$parent.tabs.push(this);
        
    
</script>

【问题讨论】:

【参考方案1】:

@Evunex 是 props 而不是 probs。尝试更改拼写,看看是否可行。

【讨论】:

非常感谢您。我太专注于逻辑,没看到 没问题@Evunex。乐于助人:)

以上是关于Vue.js 概率始终未定义的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 道具未定义

如何解决“未捕获的类型错误:无法读取未定义的属性'get'”? (Vue.JS 2)

vue.js / Vue getter 未定义错误

Vue.js。数据属性未定义

未定义 vue 实例的全局变量

laravel中的vue js..计算方法未定义