Vue学习四、使用双向数据绑定实现表单操作

使用原生的javaScript 获取节点值,和使用ref获取节点值

<template>
  <div>
    <ul>
      <li>
        姓名:<input type="text" id="name" />
      </li>
       <li>
        年龄:<input type="text" ref="age" />
      </li>
    </ul>
    <input type="button" value="提交" @click="doSubmit()" />
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      msg: "我是一个标题"
    }
  },
  methods: {
    doSubmit(){
      // 原生javaScript
      var userName = document.getElementById("name").value;
      alert(userName);
      // 标签定义ref, 通过this.$refs.值.value  获取值
      var userAge = this.$refs.age.value;
      alert(userAge);
    }
    
  }
}
</script>

 vue双向数据绑定

MVVM就是我们常说的双向数据绑定,vue就是一个MVVM框架
M表示 model
V表示 view
在MVVM的框架中 model改变会影响视图view view视图改变会反过来影响model
双向数据一般用于表单中
<template>
  <div>
    <ul>
      <li>
        姓名:<input type="text" v-model="userInfo.userName" id="name" />
      </li>
       <li>
        年龄:<input type="text" v-model="userInfo.userAge" />
      </li>
    </ul>
    <input type="button" value="提交" @click="doSubmit()" />
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      userInfo:{
        userName: "张三",
        userAge: 20
      }
    }
  },
  methods: {
    doSubmit(){
      console.log(this.userInfo);
    }
    
  }
}
</script>

 

 单选框:radio

多选框:checkbox

下拉选择:select

的数据双向绑定:

<template>
  <div>
    <ul>
      <li>
        姓名:<input type="text" v-model="userInfo.userName" id="name" />
      </li>
       <li>
        年龄:<input type="text" v-model="userInfo.userAge" />
      </li>
       <li>
        性别:<input name="sex" type="radio" value="1" id="sex1" v-model="userInfo.userSex" /><label for="sex1"></label>
            
              <input name="sex" type="radio" value="2" id="sex2" v-model="userInfo.userSex" /><label for="sex2"></label>
      </li>
      <li>
        城市:
        <select v-model="userInfo.userCity">
          <option v-for="(item, index) in cityList" :key="index" :value="item">{{item}}</option>
        </select>

      </li>
      <li>
        爱好:
        <span v-for="(item,index) in userInfo.userHobby" :key="index">
          <input type="checkbox" :id="'sel_'+index" v-model="item.checked"/>
          <label :fro="'sel_'+index">{{item.title}}</label>
        </span>
      </li>
    </ul>
    <input type="button" value="提交" @click="doSubmit()" />
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      userInfo:{
        userName: "张三",
        userAge: 20,
        userSex: 1,
        userCity: "北京",
        userHobby:[
          {title: "吃饭", checked: true},
          {title: "睡觉", checked: false},
          {title: "吃饭", checked: false}
        ]
      },
      cityList: ["北京", "上海","广州","深圳","厦门"]
    }
  },
  methods: {
    doSubmit(){
      console.log(this.userInfo);
    }
    
  }
}
</script>

 

posted @ 2022-01-25 23:57  花先生。  阅读(146)  评论(0编辑  收藏  举报