为什么用vue绑定组件样式报错

Vue.component('input-text',{

 name:'input-text',
 data(){
     return{
         text:'',
         fetch:''
     }
 },
 methods:{
     Change : ()=>{
         this.fetch="hello"
     }
 },
 template:'<div><input :class="fetch" @keydown="Change" type="text" placeholder="input" v-model="text"/><p v-text="text"></p></div>'

})
image.png

阅读 1.7k
2 个回答

修改改一下Change方法的定义,不要使用箭头函数,会获取不到this,导致报错。
提供下面两种写法,以供参考:

Vue.component('input-text',{
    name:'input-text',
    data(){
        return{
            text:'',
            fetch:''
        }
    },
    methods:{
        Change() {
            this.fetch="hello"
        },
        //或者这样写
        // Change: function() {
        //     this.fetch="hello"
        // }
    },
    template:'<div><input :class="fetch" @keydown="Change" type="text" placeholder="input" v-model="text"/><p v-text="text"></p></div>'
})
    <style>
        .a{
            border: 1px solid red;
        }
    </style>
    <div id="app">
        <input-text></input-text>
    </div>

    <script src="./vue.min.js"></script>

    <script>
        Vue.component('input-text', {
            name: 'input-text',
            data() {
                return {
                    text: '',
                    fetch: 'a'
                }
            },
            methods: {
                Change: () => {
                    this.fetch = "hello"
                }
            },
            template: `<div>
                            <input :class="fetch" @keydown="Change" type="text" placeholder="input" v-model="text"/>
                            <p v-text="text"></p>
                        </div>`
        })
        new Vue({
            el: '#app',
        })
    </script>

照着楼主的弄了下,没报错呀。fetch是空字符串,也没报错。
是不是你贴的代码不是报错的地方?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题