zoukankan      html  css  js  c++  java
  • Vue语法

    1.Vue的使用

      通过new一个Vue对象设置参数来操作某个区域的html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>快速入门</title>
        <script src="js/vue.js"></script>
    </head>
    <body>
        <div id="app">
         <!--使用{{key}}获取值--> {{message}} <!--三目运算符--> {{number==10? "Yes":"NO"}} <!--数学运算--> {{number+109}} </div> </body> <script> //view model //创建Vue对象 new Vue({ el:"#app", //由Vue接管的id为app的区域 data: { message:"hello,this is my FirstVue!", number:100 } }) </script> </html>

    2.基本语法

     1.v-on:事件名="方法名([参数])"--- 可简写为@事件名="方法名([参数])"

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>v-no:click</title>
        <script src="js/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <p>绑定click事件</p>{{message}}<br>
            <button v-on:click="clicked">点击改变message</button><br><br><hr>
            
            <p>绑定keydown事件</p>
            Vue:<input type="text"  v-on:keydown="func($event)">
            <!--传统js方式-->
            <hr>
            传统js:<input type="text" onkeydown="showkeyValue()">
        </div>
    </body>
        <script>
            //view model
            //创建Vue对象
            new Vue({
                el:"#app",  //由Vue接管的id为app的区域
                data: {
                    message:"点击前:哈哈哈"
                },
                methods:{
                    clicked:function () {
                        alert("点击按钮");
                        this.message="点击后:嘻嘻嘻!";
                    },
                    func:function(event){
                        if(event.keyCode<48 ||event.keyCode>57){
                            event.preventDefault();
                        }
                    }
                }
            })
    
            //传统js方式
            function showkeyValue() {
                if(event.keyCode<48 ||event.keyCode>57){
                    event.preventDefault();
                }
            }
        </script>
    </html>

     2.事件修饰符

      .prevent:阻止默认事件执行,比如阻止表单提交

      .stop:停止事件传播行为

    <div id="app">
            <!--<form action="/www.baidu.com" onsubmit="return func1()">
                <input type="submit" value="提交">
            </form>-->
            <!--
                事件修饰符.prevent:阻止默认事件执行
                         .stop: 停止事件传播行为
            -->
            <form action="/www.baidu.com" @submit.prevent="submit()">
                <input type="submit" value="提交">
            </form>
        </div>
    <script>
        new Vue({
            el:"#app",
            methods:{
                submit:function(){
                    alert("表单提交")
                }
            }
        })
    </script>

     3.v-text,v-html和v-bind

      v-text和v-html就和js对象的innertext,innerhtml一样,用于向标签中插入html或text,v-bind用于设置标签属性,v-bind:可以简写为:

    <div id="app">
        <div v-text="text"></div>
        <div v-html="text"></div>
        <div style="300px;height:100px">
            <font v-bind:color="bkcolor">v-bind测试</font>
            <font :color="bkcolor1">v-bind简写测试</font>
        </div>
    </div>
    <script>
        new Vue({
           el:"#app",
           data:{
               text:"<h1>hello</h1>",
               bkcolor:"red",
               bkcolor1:"blue"
           }
        });
    </script>

      4.v-model

      当使用v-model时表单元素value,selected,checked会失效,使用v-model时data中的数据会随输入框中的数据改变而改变,是一种双向绑定

    <div id="app">
        <form action="">
            用户名:<input type="text" name="username" v-model="user.username"><br>
            密码:<input type="text" name="password" v-model="user.password"><br>
            <p>{{user.username}}---{{user.password}}</p>
        </form>
    </div>
    
    <script>
        new Vue({
            el:"#app",
            data:{
                user:{
                    username:"luo",
                    password:"123456"
                },
            }
        });
    </script>

     5.v-for循环

    <div id="app">
        <h2>遍历数组</h2>
        <ui>
            <!--item代表数组中的元素,index代表下标-->
            <li v-for="(item,index) in arr">{{item}}</li>
        </ui>
    
        <h2>遍历对象</h2>
        <oi>
            <!--这里括号内的变量名可以随意,第一个为对象的属性值,第二个为属性名-->
            <li v-for="(val, key) in product">{{key}}=={{val}}</li>
        </oi>
    
        <h2>遍历数组对象</h2>
        <table>
            <tr v-for="(product) in products">
                <!--<td>{{product.id}}</td>-->
                <!--<td>{{product.name}}</td>-->
                <!--<td>{{product.price}}</td>-->
                <td v-for="(val) in product">{{val}}</td>
            </tr>
        </table>
    </div>
    
    <script>
        new Vue({
            el:"#app",
            data:{
                //数组数据
                arr:[3,4,2,7,5],
    
                //对象数据
                product:{id:1,name:"电脑",price:6000},
    
                //数组对象数据
                products:[
                    {id:7,name:"手机",price:2000},
                    {id:7,name:"自行车",price:300},
                    {id:7,name:"电视机",price:2000}
                ]
            }
        });
    </script>

     6.v-if和v-show

      都是判断绑定的数据为true/false来展示的,v-if在true时对对数据渲染,在false时会删除包含的代码,而v-show不管是true还是false都会渲染数据,只是对节点设置display:none来隐藏节点。

    <div id="app">
        <p v-if="Tif">v-if测试</p>
        <p v-show="Tshow">v-show测试</p>
        <button @click="change()">change</button>
    </div>
    
    <script>
        new Vue({
            el:"#app",
            data:{
                Tif:true,
                Tshow:true
            },
            methods:{
                change:function () {
                    this.Tif=!this.Tif;
                    this.Tshow=!this.Tshow;
                }
            }
        });
    </script>
  • 相关阅读:
    Vue组件开发实例(详细注释)
    Vue组件进阶知识总结
    webpack配置:打包第三方类库、第三方类库抽离、watch自动打包、集中拷贝静态资源
    webpack配置:less/sass文件打包和分离、自动处理css前缀、消除未使用的css及完整的webpack.config.js文件
    webpack配置:增加babel支持、打包后调试
    webpack配置:图片处理、css分离和路径问题
    webpack配置:css文件打包、JS压缩打包和HTML文件发布
    使用webpack构建本地服务器
    Webpack安装和配置
    npm模块安装机制
  • 原文地址:https://www.cnblogs.com/zy-Luo/p/11795291.html
Copyright © 2011-2022 走看看