美文网首页Web
Vue-系统指令

Vue-系统指令

作者: 瑟闻风倾 | 来源:发表于2019-05-17 14:47 被阅读0次

1. v-on

  • v-on:click(@click)
  • v-on:keydown(@keydown)
  • v-on:keyup(@keyup)
  • v-on:mousedown(@mousedown)
  • v-on:mouseover(@mouseover)

(1)v-on注册点击事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script src="vue1026.js"></script>
</head>
<body>
    <div id="app">
        {{name}}
        <button v-on:click="change">点击改变视图显示</button>
    </div>
</body>
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            name:"liy"
        },
        methods:{
            change:function(){
                this.name += "-yang"
            }
        }
    });
</script>
</html>

(2)v-on注册鼠标键盘事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="vue1026.js"></script>
</head>
<body>
    <div id="app">
        <button v-on:click="submit">提交</button>
        <div>
            <span>v-on:click可简化为@click,其他事件同理将前缀v-on:简化为@</span>
            <button @click="submit">提交</button>
        </div>
        
        <input type="text" placeholder="v-on:keydown" v-on:keydown="kd">
        <input type="text" placeholder=" @keydown" @keydown="kd">
        <input type="text" placeholder=" @keyup" @keyup="kp">
        <input type="text" placeholder=" @mousedown" @mousedown="md">
        <input type="text" placeholder=" @mouseover" @mouseover="mo">

    </div>
</body>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{

        },
        methods:{
            submit:function(){
                alert("触发了click事件:点击了提交按钮");
            },
            kd:function(){
                alert("触发了keydown事件:点击了键盘按键");
            },
            kp:function(){
                alert("触发了keyup事件:点击了键盘按键");
            },
            md:function(){
                alert("触发了mousedown事件:鼠标按下");
            },
            mo:function(){
                alert("触发了mouseover事件:鼠标经过");
            }
        }
    });
</script>
</html>

拓展:事件修饰符及冒泡事件

  • 事件修饰符:
  • 冒泡事件:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="vue1026.js"></script>
</head>
<body>
    <div id="app">
        <!-- type="submit"的按钮,点击时会自动提交表单,在表单上加@submit事件并用事件修饰符prevent来阻止表单默认提交事件 -->
        <form @submit.prevent action="http://www.baidu.com" method="get">
            <input type="text" id="username" v-model="user.uname">
            <input type="password" id="pwd" v-model="user.upwd">
            <input type="submit" @click="formSubmit" value="表单提交">
        </form>
        <!-- 多个div中都注册了事件,则可能导致冒泡,可使用事件修饰符stop(v-on:**.stop或@**.stop)来避免冒泡,如:@click.stop -->
    </div>
</body>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            user:{
                uname:"",
                upwd:""
            }

        },
        methods:{
            formSubmit:function(){
                alert("自定义表单提交事件:" + "username=" + this.user.uname + "," + "password=" + this.user.upwd);
            }
        }
    });
</script>
</html>

2. v-text 和 v-html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    
</head>
<body>
    <div id="app">
        <div>{{tip}}</div>
        <span v-text="name"></span>
        <div v-html="name"></div>
    </div>
</body>
<script type="text/javascript" src="vue1026.js"></script>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            tip:"为了展示差值表达式闪烁问题暂时将vue.js脚本导入页面下方(即不在head位置处导入)",
            name:"<h1>两者都可解决差值表达式闪值问题(网速足够慢时),但两者在解析标签时有区别</h1>"
        }
    });
</script>
</html>

**备注**: v-text 和 v-html 都可解决差值表达式闪值问题。

3. v-cloak

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <style type="text/css">
        [v-cloak]{
            display: none;
        }
    </style>
</head>
<body>
    <div id="app">
        <span v-cloak>{{name}}</span>
    </div>
</body>
<script type="text/javascript" src="vue1026.js"></script>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            name:"利用v-cloak和css规则[v-cloak]{display: none}也能解决差值表达式闪值问题"
        }
    });
</script>
</html>

**备注**:利用v-cloak和css规则[v-cloak]{display: none}也能解决差值表达式闪值问题。

4. v-bind

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="vue1026.js"></script>
</head>
<body>
    <div id="app">
        <input type="text" value="{{name}}">
        <input type="text" v-bind:value="name">
        <input type="text" :value="name">

        <a v-bind="{href:'http://itcast.cn/index/'+id}">跳转</a>
    </div>
</body>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            name:"liy",
            id:1

        }
    });
</script>
</html>

5. v-model 和双向数据绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="vue1026.js"></script>
</head>
<body>
    <div id="app">
        <!-- value属性只能将数据变化同步到视图 -->
        <input type="text" :value="name">
        <!-- v-model系统指令能够实现双向数据绑定,即不仅能将数据变化同步到视图,还能将视图上的变化同步到数据 -->
        <input type="text" v-model="phone">
        <!-- 表单提交默认方法是get可省略不写,action="#"代表提交到当前页面 -->
        <form action="#">
            <input type="text" id="username" v-model="user.uname">
            <input type="password" id="pwd" v-model="user.upwd">
            <input type="button" v-on:click="submit" value="注册">
        </form>
    </div>
</body>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            name:"liy",
            phone:"123456",
            user:{
                uname:"",
                upwd:""
            }

        },
        methods:{
            submit:function(){
                alert("username=" + this.user.uname + "," + "password=" + this.user.upwd);
                console.log("username=" + this.user.uname + "," + "password=" + this.user.upwd);
            }
        }
    });
</script>
</html>

6. v-for

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="vue221.js"></script>
</head>
<body>
    <div id="app">
        <span>列表</span>
        <ul>
            <li>{{list[0]}}</li>
            <li>{{list[1]}}</li>
            <li>{{list[2]}}</li>
            <li>{{list[3]}}</li>
        </ul>

        <span>遍历数组</span>
        <ul>
            <li v-for="item in list">{{item}}</li>
        </ul>
        <!-- 在Vue2.0中数组的索引和值的顺序为v-for="(值,索引) in array",而在Vue1.0中顺序相反。 -->
        <ul>
            <li v-for="(item,index) in list" :key="index">{{index}}-{{item}}</li>
        </ul>


        <span>遍历对象</span>
        <ul>
            <li v-for="item in user">{{item}}</li>
        </ul>
        <!-- 在Vue2.0中是v-for="(属性值,属性名,索引) in object",而在Vue1.0中顺序相反。 -->
        <ul>
            <li v-for="(item,key,index) in user">{{index}}:{{key}}:{{item}}</li>
        </ul>

    </div>
</body>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            list:["火龙果","龙眼","猕猴桃","樱桃"],
            user:{
                name:"liy",
                phone:"123456"
            }
        }
    });
</script>
</html>

7. v-if 和 v-show

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="vue1026.js"></script>
</head>
<body>
    <div id="app">
        <div>
            <span>v-if和v-show都能实现元素的隐藏和显示,但v-if是将元素添加到dom或从dom移除,而v-show是通过为元素添加或移除{display:none}属性来实现隐藏和显示</span>
        </div>
        
        <button v-on:click="showOrHidden">显示隐藏切换</button>
        <div v-if="isShow">我有一头小毛驴</div>
        <div v-show="isShow">我又有一头小毛驴</div>
    </div>
</body>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            isShow:true
        },
        methods:{
            showOrHidden:function(){
                this.isShow = !this.isShow;
            }
        }
    });
</script>
</html>

相关文章

  • Vue-系统指令

    1. v-on v-on:click(@click) v-on:keydown(@keydown) v-on:ke...

  • vue中v-text和v-html的区别

    v-text 和 v-html的区别: vue-指令 v-text...

  • Vue-指令

    以v-开头 一、文本操作指令 上一篇文章-插值 二、条件渲染指令 上一篇文章-条件与循环 三、列表渲染指令 上一篇...

  • Vue-指令

    一.文本操作指令 1.v-text 2.v-html 3.v-once 4.v-model 5.v-cloak 解...

  • vue-指令

    v-text 预期:string 详细: 更新元素的textContent。如果要更新部分的textContent...

  • vue-特殊指令

    keykey 的特殊 attribute 主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 ...

  • Vue-自定义指令(属性指令和元素指令)

    1. 自定义指令属性指令 2. 自定义元素(标签)指令

  • vue-自定义指令

    然后你可以在模板中任何元素上使用新的 v-focus 属性,如下:

  • Vue-自定义指令

    一、自定义全局按键修饰符 二、使用 Vue.directive()定义全局的指令其中:参数1——指令的名称,注意:...

  • VUE-自定义指令

    有的情况下,需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。举个聚焦输入框的例子,如下:、 再如:...

网友评论

    本文标题:Vue-系统指令

    本文链接:https://www.haomeiwen.com/subject/tmrnaqtx.html