zoukankan      html  css  js  c++  java
  • Vue.js 章6 v-model与表单

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script src="Vue.2.6.10.js"></script>
    </head>
    <body>
        <!-- v-model在文本域的用法 -->
        <div id="app1">
            <textarea name="" v-model="text" id="textarea" cols="30" rows="10"></textarea><!--拼音不会更新-->
            <textarea name="" @input = 'handleInput' id="textarea" cols="30" rows="10"></textarea><!--实时更新-->
            <!-- 使用v-model以后,其显示的值只依赖绑定的数据,初始化的value属性和textarea标签之间的值都不会起作用 -->
            <p>输入内容:</p>
            <p style="white-space: pre;">{{ text }}</p>
        </div>
    
        <div id="app2">
            <input type="radio" :checked = 'picked' @click = 'toggleChecked'>
            <label for="">单选按钮</label>
        </div>
    <!-- 组合使用实现互斥选择 -->
        <div id="app3">
            <input type="radio" v-model="picked" value="html!" id="html">
            <label for="html">Html</label>
            <br>
            <input type="radio" v-model="picked" value="css!" id="css">
            <label for="css">Css</label>
            <br>
            <input type="radio" v-model="picked" value="js!" id="js">
            <label for="js">JavaScript</label>
            <br>
            <p>被选中的项:{{ picked }}</p><!--输出的是value中的值-->
            <!-- 原理:v-model配合value,点击按钮/标签——
            v-model你可以理解成是value的更高级,:value(v-bind)属于数据单向绑定,v-model属于双向绑定
            v-model官方给出的说法是:这其实是一个简写的形式,v-model实际执行的是下面的绑定:
            <input type="text" v-bind:value="dataA" v-on:input="dataA = $event.target.value" />
            在本例中则是:<input type="text" v-bind:value="picked" v-on:click="picked = $event.target.value" />
            v-model是动态绑定值到value,然后监听input的input事件获取值后赋给dataA的一个过程。 -->
        </div>
    
        <!-- 复选框 -->
        <div id="app4">
            <input type="checkbox" v-model="checked" id="checked">
            <label for="checked">选择状态:{{ checked }}</label>
            <br>
            <input type="checkbox" v-model="multichecked" value="html!" id="html">
            <label for="html">Html</label>
            <br>
            <input type="checkbox" v-model="multichecked" value="css!" id="css">
            <label for="css">Css</label>
            <br>
            <input type="checkbox" v-model="multichecked" value="js!" id="js">
            <label for="js">JavaScript</label>
            <br>
            <p>被选中的项:{{ multichecked }}</p>
        </div>
    
        <div id="app5">
            <select v-model="selected" id="" multiple>
                <!-- 如果option含有value属性,v-model就会优先匹配value的值,如果没有就会匹配option标签内的text -->
                <!-- 给select添加multiple就可以多选 -->
                <!-- 在业务中通常用v-for动态输出option、value与text -->
                <option>html</option>
                <option>css</option>
                <option>js</option>
                <option>jq</option>
                <option>vue</option>
            </select>
            <p>选择的项:{{ selected }}</p>
        </div>
        <!-- 绑定值 -->
        <div id="app6">
            <input type="radio" v-model="picked" :value="value">
            <!-- 别忘了v-model会匹配value的值 -->
            <label for="">单选按钮</label>
            <p>{{ picked }}</p>
            <p>{{ value }}</p>
    
            <input type="checkbox" v-model="toggle" :true-value="value1" :false-value="value2" >
            <label for="">复选框</label>
            <p>{{ toggle }}</p>
            <p>{{ value1 }}</p>
            <p>{{ value2 }}</p>
        </div>
    
        <!-- 常见的表单修饰符 -->
        <div id="app7">
            <input type="text" v-model.lazy="message">
            <!-- 在输入框内容发生改变后才更新 -->
            <p>{{ message }}</p>
            <input type="text" v-model.number="messageNum">
            <!-- 将输入转换为number类型 -->
            <p>{{ messageNum }}</p>
            <input type="text" v-model.trim="messageTrim">
            <!-- 过滤首尾空格 -->
            <p>{{ messageTrim }}</p>
            <!-- 都会同时影响输入框中的值 -->
        </div>
    </body>
    <script>
        var app1 = new Vue({
           el:"#app1",
           data:{
               text:''
           },
           methods: {
               handleInput:function(e){
                   console.log(e,e.target);
                   this.text = e.target.value;
                   //InputEvent {isTrusted: true, data: "s", isComposing: true, inputType: "insertCompositionText",
                    // dataTransfer: null, …} 
                    // <textarea name id=​"textarea" cols=​"30" rows=​"10">​</textarea>​
               }
           },
        });
    
        var app2 = new Vue({
           el:"#app2",
           data:{
               picked:true
           },
           methods:{
               toggleChecked:function(){
                   this.picked = !this.picked;
               }
           }
        });
    
        var app3 = new Vue({
            el:"#app3",
            data:{
                picked:''
            }
        });
    
        var app4 = new Vue({
           el:"#app4",
           data:{
               checked:'',//这里应该是Vue内置的吧,不然真的没道理...
            //    multichecked:'' 会变为true/false,错误写法
               multichecked:[]
           } 
        });
    
        var app5 = new Vue({
           el:"#app5",
           data:{
                selected:['html','css'],//要用ctrl+option的方式多选也是醉了
           }, 
        });
    
        var app6 = new Vue({
           el:"#app6",
           data:{
                picked:false,
                value:123,//选中时app.picked===app.value
                toggle:false,
                value1:'a',//选中:app.toggle === app.value1,反之value2  这个应该也是自带的吧...
                value2:'b'
           } 
        });
    
        var app7 = new Vue({
           el:"#app7",
           data:{
                message:'',
                messageNum:'',
                messageTrim:''
           }, 
        });
    </script>
    </html>
  • 相关阅读:
    docker-ce版本19.03.8修改docker镜像的存储地址的方法
    Django自带的用户认证模块auth auth.authenticate
    怎么用Python pip怎么升级pip?
    Python import Module加载模块失败 in ImportError: No module named
    系统如何查看某个端口的应用进程pid,关闭进程,解决应用端口占用问题
    琐碎知识点(2)
    琐碎知识点(1)
    微信小程序开发笔记6——小程序添加并使用外部字体(亲测可用)
    Gitlab教程2 —— 多人协同工作(清晰)
    Gitlab教程1 —— 安装和基本使用
  • 原文地址:https://www.cnblogs.com/linbudu/p/10847794.html
Copyright © 2011-2022 走看看