vue基本语法

快速入门

<body>
        <div id="app">
            {{message}}<!--Vue的插值表达式,把data中定义的数据显示到此处-->

            <!-- 三元运算符 -->
            {{ false ? "OK" : "No" }}

            <!-- 数学运算-->
            {{number*3.14}}

            <!--插值表达式不支持
            {{var a = 1;}}
            {{if(a = 10){}}}
            -->

        </div>
    </body>
    <script>
        //view model
        //创建Vue对象
        new Vue({
            el:"#app",//由vue接管id为app区域
            data:{
                message:"Hello Vue!  EESY",//注意:此处不要加分号
                number:100
            }
        });
    </script>

v-on: click 事件绑定

    <body>
        <div id="app">
            {{message}}  
            <button v-on:click="fun1('Vue v-on')">vue的onclick</button>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                message:"Hello Vue!"
            },
            methods:{
                fun1:function(msg){
                    alert("Hello");
                    this.message = msg;
                }
            }
        });
    </script>

v-on:keydom 键盘绑定

<body>
        <div id="app">
            Vue:<input type="text" v-on:keydown="fun($event)">
            <hr/>
            传统JS:<input type="text"  onkeydown="showKeyCode()"/>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            methods:{
                /* $event 它是vue中的事件对象  和我们传统js的event对象是一样的  */
                fun:function(event){
                    var keyCode = event.keyCode;
                    if(keyCode < 48  || keyCode > 57){
                        //不让键盘的按键起作用
                        event.preventDefault();
                    }
                }
            }
        });


        //传统js的键盘按下事件
        function showKeyCode(){
            //event对象和我们的document对象以及window对象是一样的,可以不用定义直接使用
            var keyCode = event.keyCode;
            if(keyCode < 48  || keyCode > 57){
                //不让键盘的按键起作用
                event.preventDefault();
            }
            // alert(keyCode);
            // if(event.keyCode == 13){
            //     alert("你按的是回车");
            // }
        }
    </script>

v-on:mouseover 获取焦点

<body>
        <div id="app">
            <div @mouseover="fun1" id="div">
                <textarea @mouseover="fun2($event)">这是一个文件域</textarea>
            </div>

            <!--<div onmouseover="divmouseover()" id="div">
                <textarea onmouseover="textareamouseover()">这是一个文件域</textarea>
            </div>-->
        </div>
    </body>
    <script>
        //view model
        /**
         * @事件名称  就是  v-on:事件名称的简写方式
         * @mouseover它就等同于v-on:mouseover
         */
        new Vue({
            el:"#app",
            methods:{
                fun1:function(){
                    alert("鼠标悬停在div上了");
                },
                fun2:function(event){
                    alert("鼠标悬停在textarea上了");
                    event.stopPropagation();
                }
            }
        });


        //传统的js方式
        function divmouseover(){
            alert("鼠标移动到了div上了");
        }

        function textareamouseover(){
            alert("鼠标移动到了textarea上了");
            event.stopPropagation();
        }
    </script>

v-on:事件修饰符(中断,停止)


    <body>
        <div id="app">
            <form @submit.prevent action="http://www.itheima.com" method="post" >
                <input type="submit" value="提交">
            </form>
            <!--<form action="http://www.itheima.com" method="post" onsubmit="return checkForm()">
                <input type="submit" value="提交">
            </form>-->
            <hr/>
            <div @mouseover="fun1" id="div">
                <textarea @mouseover.stop="fun2($event)">这是一个文件域</textarea>
            </div>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            methods:{
                fun1:function(){
                    alert("鼠标悬停在div上了");
                },
                fun2:function(event){
                    alert("鼠标悬停在textarea上了");
                }
            }
        });
        
        
        //传统js方式
        function checkForm(){
            alert(1);
            //表单验证必须有一个明确的boolean类型返回值
            //在应用验证方法时必须加上 return  方法名称
            return false;
        }
    </script>

v-on:按钮修饰符

    <body>
        <div id="app">
            Vue:<input type="text" @keydown.enter="fun1">
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            methods:{
                fun1:function(){
                    alert("按下的是回车");
                }
            }
        });

v-text 与 v-html

    <body>
        <div id="app">
            <div v-text="message"></div>
            <div v-html="message"></div>
            <!--<div id="div1"></div>
            <div id="div2"></div>-->
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                message:"<h1>Hello Vue</h1>"
            }
        });

        //传统js的innerText和innerHTML
        window.onload = function(){
            document.getElementById("div1").innerHTML="<h1>Hello</h1>";
            document.getElementById("div2").innerText="<h1>Hello</h1>";
        }
    </script>

v-bind不同写法

<body>
       <div id="app">
           <font size="5" v-bind:color="ys1">第一种不同写法</font>
           <font size="5" :color="ys2">第二种不同写法</font>
       </div>
   </body>
   <script>
       //view model
       //插值表达式不能用于html标签的属性取值
       //要想给html标签的属性设置变量的值,需要使用v-bind
       //v-bind也可以简化写法   直接使用:
       new Vue({
           el:"#app",
           data:{
               ys1:"red",
               ys2:"green"
           }
       })
   </script>

v-model

<body>
        <div id="app">
            <form action="" method="post">
                用户名:<input type="text" name="username" v-model="user.username"><br/>
                密码:<input type="text" name="password" v-model="user.password"><br/>
            </form>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                user:{
                    username:"test",
                    password:"1234"
                }
            }
        })
    </script>

v-for 遍历数组

<body>
        <div id="app">
            <ul>
                <li v-for="(item,index) in arr ">{{item}}={{index}} </li>
            </ul>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                arr:[1,2,3,4,5]
            }
        })
    </script>

v-for遍历对象

<body>
        <div id="app">
            <ul>
                <li v-for="(key,value) in product ">{{value}}===={{key}} </li>
            </ul>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
               product:{
                   id:1,
                   name:"笔记本电脑",
                   price:5000
               }
            }
        })
    </script>

v-for遍历对象二

<body>
        <div id="app">
            <table border="1">
                <tr>
                    <td>序号</td>
                    <td>编号</td>
                    <td>名称</td>
                    <td>价格</td>
                </tr>
                <tr v-for="(product,index) in products ">
                    <td>{{index}}</td>
                    <td>{{product.id}}</td>
                    <td>{{product.name}}</td>
                    <td>{{product.price}}</td>
                </tr>
            </table>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                products:[
                    { id:1,name:"笔记本电脑",price:5000 },
                    { id:2,name:"手机",price:3000 },
                    { id:3,name:"电视",price:4000 }
                ]
            }
        })
    </script>

v-if 与 v-show

    <body>
        <div id="app">
            <span v-if="flag">风电吃亏</span>
            <span v-show="flag">itcast</span>
            <button @click="toggle">切换</button>
        </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                flag:false
            },
            methods:{
                toggle:function(){
                    this.flag = !this.flag;
                }
            }
        })
    </script>

vue生命周期

    <body>
        <div id="app">
            {{message}}
        </div>
    </body>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                message: 'hello world'
            },
            beforeCreate: function() {
                console.log(this);
                showData('创建vue实例前', this);
            },
            created: function() {
                showData('创建vue实例后', this);
            },
            beforeMount: function() {
                showData('挂载到dom前', this);
            },
            mounted: function() {
                showData('挂载到dom后', this);
            },
            beforeUpdate: function() {
                showData('数据变化更新前', this);
            },
            updated: function() {
                showData('数据变化更新后', this);
            },
            beforeDestroy: function() {
                vm.test = "3333";
                showData('vue实例销毁前', this);
            },
            destroyed: function() {
                showData('vue实例销毁后', this);
            }
        });

        function realDom() {
            console.log('真实dom结构:' + document.getElementById('app').innerHTML);
        }

        function showData(process, obj) {
            console.log(process);
            console.log('data 数据:' + obj.message)
            console.log('挂载的对象:')
            console.log(obj.$el)
            realDom();
            console.log('------------------')
            console.log('------------------')
        }
        // vm.message = "good...";
        vm.$destroy();
    </script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。