【问题标题】:Laravel - How to Import Vue Component to Another ComponentLaravel - 如何将 Vue 组件导入另一个组件
【发布时间】:2019-10-19 05:48:46
【问题描述】:

我是 Vue.js 的新手。我想了解使用component。我试图将我的组件导入另一个组件,但它失败了。我正在使用Laravel 5.8。以下是我收到的错误。

找不到模块:错误:无法解决 './components/modalAlert.vue

以下是我的代码。

app.js

Vue.component('form-to-do', require('./components/formToDo.vue').default);
Vue.component('modal-alert', require('./components/modalAlert.vue').default);

const app = new Vue({
    el: '#app',
});

formToDo.Vue

<template>
// form 

<modal-alert></modal-alert>
</template>

<script>
import modalAlert from './components/modalAlert.vue';

export default {
    components: {
       'modal-alert': modalAlert 
    },

    data() {
        return {
            setErrors: [],
            tasks: [],
            task: {
                id: '',
                name: '',
                completed: '',
                date_completed: ''
            },
            result: '',
            input: {
                name: ''
            }
        };
    },
}
</script>

modalAlert.vue

<template>
    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">&times;</span>
            </button>
          </div>
          <div class="modal-body">
            Test  
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
            <button type="button" class="btn btn-primary">Save changes</button>
          </div>
        </div>
      </div>
    </div>
</template>

<script>
    export default {
        props: ['id'],
        data() {
            return {

            }
        },

        mounted() {
            console.log('Component mounted.')
        }
    }
</script>

【问题讨论】:

    标签: javascript html vue.js


    【解决方案1】:

    您的组件可能在同一个文件夹中。在您的组件 formToDo.vue 中: 改变这个:

    import modalAlert from './components/modalAlert.vue';
    

    到这里:

    import modalAlert from './modalAlert.vue';
    

    要解决另一个问题,正如@ambianBeing 建议的那样,您的组件 formToDo.vue 必须具有根元素才能在其中添加子组件。

    <template>
    <div> <!-- this is the root -->
        <modal-alert></modal-alert>
    </div>
    </template>
    

    【讨论】:

    • 按照您的建议进行编辑后。现在错误是Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.
    • 这是另一个问题。向我们展示 modalAlert.vue 组件的代码。
    • 我在我的问题上更新了modalAlert.vue 组件的问题。
    • @Khairul formToDo.Vue 应该有根元素(div 等),如果没有,则应该组合(模板、组件等)。 &lt;template&gt;&lt;div id="formToDoContainer"&gt;&lt;modal-alert&gt;&lt;/modal-alert&gt;&lt;/div&gt;&lt;/template&gt;
    猜你喜欢
    • 2020-07-23
    • 2022-10-04
    • 2017-05-18
    • 2021-02-23
    • 2020-01-27
    • 2020-07-02
    • 2018-11-10
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多