• net mvc中使用vue自定义组件遇到的坑


    自定义一个ButtonCounter.js组件

    export default {
        data() {
            return {
                count: 0
            }
        },
        template: `
        
          You clicked me {{ count }} times.
        `
    }
    

    按照官网文档的意思,组件命名需要大写驼峰命名。或者使用kebaba-case方式。但是MVC只支持kebaba-case
    在这里插入图片描述
    如果我们使用PascalCase方式命名来导入自定义组件

    <script type="module">
    
        import reclick from '../../js/reclick.js';
        import ButtonCounter from "../../js/components/ButtonCounter.js";
        const app = Vue.createApp({
            // components: {
            //     buttoncounter
            // },
            data() {
                return {
                    count: 0
                }
            },
            methods: {
                increment() {
                    this.count++
                }
            },
            template: '#app-template'
        })
        app.use(ElementPlus)
        app.use(vant)
        app.use(vant.Lazyload)
    
        //自定义组件
        app.component('ButtonCounter', ButtonCounter)
    
        // 调用工具函数,弹出一个 Toast
        // vant.showToast('提示');
        // app.directive('focus', {
        //     mounted: (el, binding, vnode, prevNode) => {
        //         el.addEventListener('click', e => {
        //             if (!el.disabled) {
        //                 el.disabled = true;
        //                 el.style.cursor = 'not-allowed';
        //                 el.classList.add('is-disabled');
        //                 setTimeout(() => {
        //                     el.disabled = false;
        //                     el.style.cursor = 'pointer';
        //                     el.classList.remove('is-disabled');
        //                 }, binding.value || 1000);
        //             }
        //         });
        //     }
        // }); //自定义指令
    
        app.directive('reclick', reclick
        ); //自定义指令
        app.mount('#app')
    </script>
    
    <template id="app-template">
     
        <el-button v-reclick="20000" type="primary" @@click="increment">按钮el-button>
        <h1>Count:{{count}}h1>
    
    
    
        <ButtonCounter />
    template>
    

    这样的方式引入组件并在页面中使用,什么都不会显示,并且F12会有警告
    在这里插入图片描述
    提示组件失败,并且组件名称默认是小写。既然默认是小写那我们使用kebaba-case命名方式试试。

    export default {
        name: 'vant-my-button',
        data() {
            return {
                count: 0
            }
        },
        template: `
        
          You clicked me {{ count }} times.
        `
    }
    

    组件里面给组件name赋值。

    然后使用组件

        import ButtonCounter from "../../js/components/ButtonCounter.js";
        //自定义组件
        app.component('vant-my-button', ButtonCounter )
    
    <template id="app-template">
     
        <el-button v-reclick="20000" type="primary" @@click="increment">按钮el-button>
        <h1>Count:{{count}}h1>
    
    
        <vant-my-button>vant-my-button>
        <vant-my-button>vant-my-button>
        <vant-my-button>vant-my-button>
    template>
    

    运行后,组件完美加载出来。

    注意,vue如果挂载了template ,那么组件请写在template 中,如果写在外面也出不来。

  • 相关阅读:
    基于机器学习之模型树短期负荷预测(Matlab代码实现)
    windows安装多个版本jdk
    孙宇晨接受瑞士媒体Bilan采访:熊市不会持续太久
    【漏洞复现】Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)
    文件系统理论详解,Linux操作系统原理与应用
    【PAT B-1038】统计同成绩学生
    python-(3)条件判断与循环语句
    python制作GIF动图
    2022,软件测试行业岗位细分,薪资分布
    Python版按键精灵基础代码
  • 原文地址:https://blog.csdn.net/csdn2990/article/details/143333234