【问题标题】:Can't use vuejs component in template无法在模板中使用 vuejs 组件
【发布时间】:2019-05-25 11:07:24
【问题描述】:

我有一个带有 typescript 和 webpack 的 vuejs 应用程序。我试图制作一个用于添加新客户的表单组件。为此,我有一个 .vue 文件:

<template>
    <v-dialog max-width="600px">
        <v-card>
            <v-card-title>
                <div>
                    <h3 class="headline primary--text">Account</h3>
                </div>
            </v-card-title>

            <v-card-actions>
                <v-spacer />
                <v-btn flat @click="cancel">cancel</v-btn>
                <v-btn color="primary" flat :disabled="!validFormData" @click="submit">save</v-btn>
            </v-card-actions>
        </v-card>
    </v-dialog>
</template>

<script src="./CustomerForm.ts"></script>

还有 CustomerForm.ts:

import { Prop, Vue, } from 'vue-property-decorator'
import Component from 'vue-class-component'
import { Customer } from "../../../types/Customer";

@Component
export default class CustomerForm extends Vue {
    @Prop()
    customer!: Customer;

    @Prop()
    value!: boolean;

    validFormData: boolean = true;

    submit() {
        if ((<HTMLFormElement>this.$refs.form).validate()) {
            this.$emit('save', this.customer)
        }
    }

    cancel() {
        (<HTMLFormElement>this.$refs.form).reset();
        this.$emit('input');
    }
}

现在我想将它包含在我的父模板中,当“showForm”为真时我可以打开它:

<customer-form v-model="showForm"/>

但我总是得到这个错误:

Failed to mount component: template or render function not defined.

found in

---> <CustomerForm>
...

我尝试用这个导入它:

import { Vue } from 'vue-property-decorator';
import Component from 'vue-class-component';
import CustomerForm from "./CustomerForm";


@Component({
    components: {
        CustomerForm
    }
})
export default class CustomerManagement extends Vue {
...
}

我认为引用该组件有问题?

【问题讨论】:

    标签: vue.js


    【解决方案1】:

    你是否像下面这样包含了这个?

    import CustomerForm from '@/../CustomerFormComponent.vue';
    
    @Component({components:{CustomerForm}})
    export default class ParentClass extends Vue {
    

    另外&lt;customer-form v-model="showForm"/&gt;是错误的你的等待行为应该是这样的&lt;customer-form v-if="showForm"/&gt;

    【讨论】:

    • 感谢您的回答。我将导入代码添加到我的问题中。我想知道问题是否在于 CustomerForm 引用了 .ts 文件而不是 .vue。是不是系统找不到这两者的关系?
    • 您是否尝试导入 Vue 文件而不是 ts?
    • 是的,但这会导致打字稿出现问题,因为他找不到类型。
    • 阅读medium.com/js-dojo/…后看起来像:需要尝试将&lt;template&gt; 更改为&lt;customer-form inline-template&gt;
    猜你喜欢
    • 1970-01-01
    • 2020-07-10
    • 2016-02-01
    • 1970-01-01
    • 2017-12-18
    • 2017-11-20
    • 1970-01-01
    • 2019-07-22
    • 2019-03-28
    相关资源
    最近更新 更多