在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ vue自定義組件中有2個(gè)<input>輸入框,使用v-model該如

vue自定義組件中有2個(gè)<input>輸入框,使用v-model該如何綁定?

我在Vue component中定義了2個(gè)<input>輸入框,我想將這兩個(gè)輸入框的value用v-model分別綁定到父組件,但是我只找到了綁定一個(gè)的方法,分別綁定2個(gè)該如何操作呢?

如下代碼不管在哪個(gè)輸入框輸入內(nèi)容,searchText的值都會(huì)改變,相當(dāng)于兩個(gè)<input>的值綁定到了一個(gè)searchText上,用v-model如何將它們分開綁定呢?


<div id='app'>
    <my-component v-model='searchText'></my-component>
    <p>{{ searchText }}</p>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>    

<script>
    Vue.component("my-component", {
        props:['value'],
        template:`
            <div>
                <label for='input-one'>
                    name:
                    <input id='input-one'
                        v-bind:value='value'
                        v-on:input="$emit('input', $event.target.value)""></input>
                </label>
                <label for='input-two'>
                    age:
                    <input id='input-two'
                        v-bind:value='value'
                        v-on:input="$emit('input', $event.target.value)""></input>
                </label>
            </div>`
    })
    var app = new Vue({
        el:'#app',
        data:{
            searchText:'start edit'
        }
    })
回答
編輯回答
冷眸

你現(xiàn)在input-one 和 input-two 綁定的都是value

你一個(gè)是val1 另一個(gè)是val2 props:['val1','val2'] 不就行了

2017年11月16日 07:08
編輯回答
毀了心

用兩個(gè)model吧,可以不要用v-model,這只是官方提供的一個(gè)語法糖

<div id='app'>
    <my-component model1='searchText1' model2='searchText2' @input1="val=>searchText1=val" @input2="val=>searchText2=val"></my-component>
    <p>{{ searchText }}</p>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>    

<script>
    Vue.component("my-component", {
        props:['model1', 'model2'],
        template:`
            <div>
                <label for='input-one'>
                    name:
                    <input id='input-one'
                        v-bind:value='model1'
                        v-on:input="$emit('input1', $event.target.value)""></input>
                </label>
                <label for='input-two'>
                    age:
                    <input id='input-two'
                        v-bind:value='model2'
                        v-on:input="$emit('input2', $event.target.value)""></input>
                </label>
            </div>`
    })
    var app = new Vue({
        el:'#app',
        data:{
            searchText:'start edit'
        }
    })
2017年6月25日 11:03
編輯回答
任她鬧

解決這個(gè)問題有幾種方式,可以不需要v-model,通過props接收父組件2個(gè)值,$emit傳遞2個(gè)事件到父組件,也可以強(qiáng)行使用v-model采用 liximomo 的聚合多個(gè)值的方式。聚合方式代碼如下:

<div id="app">
    <my-component v-model="search"></my-component>
    <p>name: {{ search.name }}</p>
    <p>age : {{ search.age }}</p>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

<script>
    Vue.component('my-component',{
        props: ['value'],
        template:`
            <div>
              <label for='input-one'>
                  name:
                  <input id='input-one'
                      v-bind:value='value.name'
                      v-on:input="$emit('input', {name: $event.target.value, age: value.age})""></input>
              </label>
              <label for='input-two'>
                  age:
                  <input id='input-two'
                      v-bind:value='value.age'
                      v-on:input="$emit('input', {name: value.name, age: $event.target.value})""></input>
              </label>
            </div>`

    })

    var app = new Vue({
        el: '#app',
        data: {
            search: {
                name:'edit name',
                age:18
            }
        }
    })
</script>
2018年8月16日 21:30
編輯回答
病癮

這種情況說明你應(yīng)該聚合你的多個(gè)值, 把他們的整體當(dāng)做一個(gè) model.

<div id='app'>
    <!–– search 是一個(gè)對(duì)象 { name: '', age: '' } ––>
    <my-component v-model='search'></my-component>
    <p>{{ searchText }}</p>
</div>
props:['value'],
template:`
    <div>
      <label for='input-one'>
          name:
          <input id='input-one'
              v-bind:value='value.name'
              v-on:input="$emit('input', { ... value, name: $event.target.value})""></input>
      </label>
      <label for='input-two'>
          age:
          <input id='input-two'
              v-bind:value='value.age'
              v-on:input="$emit('input', { ... value, age: $event.target.value})""></input>
      </label>
    </div>`
2018年6月25日 02:35