vue中传值问题

<body>

    <div id="app">
        <p>总数:{{total}}</p>
        
            <my-component v-model="total">
                 </my-component>
            <button @click="handleGetTotal"></button>
    
    </div>
</body>
    <script src="https://unpkg.com/vue/dist/vue.min.js"></script>
<script>

    Vue.component('my-component',{
        prors:['value'],
        template:'<input :value="value" @input="handleIncrease"/>',
    
      methods:{
          handleIncrease:function(event){
              
              this.$emit('input',event.target.value);
          },

      }
        
    });
    var app=new Vue({
        el:'#app',
        data:{
            total:0
        },
        methods:{
            handleGetTotal:function(){
                this.total--;
            }
        }
        
    })
</script>


中间template:'<input :value="value" @input="handleIncrease"/>',这句话什么意思,这个value怎么来的,浏览器报错也说value未定义

阅读 2.4k
4 个回答

<input :value="value" @input="handleIncrease"/>

:value 意思是 把props里的value绑定 其实跟我们平时的

<input v-model="value" @input="handleIncrease"/>一样

至于@input="handleIncrease" 是当input的值发生改变时,handleIncrease里的this.$emit('input')是改变props的值,使得有双向绑定的效果

clipboard.png
我猜你这里是想写一个props

v-model只是语法糖,会默认吧value作为属性传入组件内部,然后通过input的事件抛出value值,达到双向绑定;

你在data(){return{}}里面定义了value了吗

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