Vue.js实战 章五:内置指令

<!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="https://vuejs.org/js/vue.js"></script> -->
    <script src="Vue.2.6.10.js"></script>
</head>
<style>
    [v-cloak]{
        display: none;
    }
</style>
<body>
    <div id="app1" v-cloak>
        {{ message }}
    </div>

    <div id="app2">
        <input type="text" v-model=‘message‘>
        <span> {{ message }} </span>
        <span v-once> {{ message }} </span>
    </div>
    <br>
    <div id="app3">
        <input type="text" v-model=‘message‘ v-model=‘odevity‘>
        <p v-if = "message == 1">一</p>
        <p v-else-if = "message == 2">二</p>
        <p v-else>其他</p>
        <template v-if = "odevity == ‘大于100‘">
            <p>大于100</p>
            <p>是真的,真的大于100</p>
            <!-- 一次判断多个元素时这样安排 -->
        </template>
    </div>

    <div  id="app4">
        <template v-if = "type === ‘name‘">
            <label>用户名</label>
            <input type="text" placeholder="用户名">
        </template>
        <template v-else >
            <label>密码</label>
            <input type="text" placeholder="密码">
        </template>
        <button @click = "toggleType">切换输入类型</button>
    </div>

    <div id="app5">
        <p v-show=‘show == true‘>为true时显示改行</p>
        <button @click = "toggleShow">切换显示状态</button>
    </div>

    <!-- 列表渲染指令 -->
    <div id="app6">
        <!-- 遍历数组 -->
        <ul>
            <template v-for = "(book,index) in books">
                <li>{{ index+1 }} - {{ book.name }},{{ book.author }}</li>
                <!-- <span v-for = ‘value in author‘>{{ value }}</span>  如果写在这里,相当于遍历中嵌了一个遍历-->
            </template>
            <br>
            <!-- 遍历对象 -->
            <li v-for = ‘(value,key,index) in author‘>{{ index }} - {{ key }}:{{ value }}</li>
        </ul>
    </div>

    <div id="app7">
        <!-- 数组更新及方法 -->
    </div>

    <div id="app8">
        <!-- 方法与事件 -->
        点击次数:{{ counter }}
        <button @click = "counter++">+1</button>
        <button @click = "add">+1</button>
        <button @click = "add(10)">+10</button>
    </div>

    <div id="app9">
        <a href="https://www.4399.com" @click = "handleClick(‘禁止打开哈‘,$event)">无法被打开的链接</a>
    </div>

    <div id="app10">
        <!-- 使用修饰符简化操作 -->
        <a href="#" @click.stop = "handle">阻止单击事件冒泡</a>
        <form action="#" @submit.prevent = "handle">提交事件不再重载页面</form>
        <form action="#" @submit.prevent>提交事件不再重载页面(仅有修饰符而无回调函数)</form>
        <a href="#" @click.stop.prevent = "handle">串联修饰符</a>
        <a href="#" @click.capture = "handle">添加事件侦听器时,使用事件捕获模式</a>
        <a href="#" @click.self = "handle">只当事件在元素本身触发时触发</a>
        <a href="#" @click.once = "handle">只触发一次</a>
    </div>
</body>
<script>
    // console.log(new Vue());
    //v-cloak 无需表达式 会在Vue实例结束编译后从绑定的html元素上移除,常和display:none结合使用
    var app1 = new Vue({
       el:"#app1",
       data:{
           message:‘这是一段文本~‘//防止在网速较慢是页面上会出现{{ message }}的字样
       }
    });//解决初始化慢导致页面闪动

    var app2 = new Vue({
       el:"#app2",
       data:{
           message:‘test‘//v-once 定义它的元素/组件只渲染一次  以后将视为静态内容
       }
    });

    var app3 = new Vue({
        el:"#app3",
        data:{
            message:‘‘,
        },
        computed: {
            odevity:function(){
                if(this.message > 100){
                    return "大于100";
                }else{
                    return "小于100";
                };
            },

        },
    });

    var app4 = new Vue({
       el:"#app4",
       data:{
           type:‘name‘
       },
       methods: {
           toggleType:function(){
               this.type = this.type === ‘name‘ ? ‘mail‘:‘name‘;
           }
       },
       //虽然DOM改变了,但是之前键入的内容并没有改变,<input>元素被复用了
       //不想这样做?在不希望被复用的<input>元素中添加key属性 key的值必须是唯一的
    });

    var app5 = new Vue({
       el:"#app5",
       data:{
           show:true
       },
       methods:{
           toggleShow:function(){
            //    console.log(show,this.show);//未定义的show
               console.log(this.show);//
               show = !this.show;//错误的写法,会重新定义一个收未变量
               console.log(show,this.show);

               this.show = !this.show;
               console.log(this.show);
           }
       }
    });

    var app6 = new Vue({
       el:"#app6",
       data:{
           books:[
               {name:‘book1‘,author:‘1‘},
               {name:‘book2‘,author:‘2‘},
               {name:‘book3‘,author:‘3‘},
               {name:‘book4‘,author:‘4‘},
               {name:‘book5‘,author:‘5‘}
           ],
           author:{
               name:‘Harold‘,
               gender:‘男‘,
               age:‘20‘
           }
       }
    });

    var app7 = new Vue({

    });

    var app8 = new Vue({
       el:"#app8",
       data:{
           counter:0
       },
       methods:{
           add:function(count){
               count = count || 1;
               this.counter += count;
               console.log(count);
               //(不带括号打印count)MouseEvent {isTrusted: true, screenX: 211, screenY: 612, clientX: 152, clientY: 456, …}
            //    10
            //如果以不带()的形式供@click调用,且后该方法有参数,则会默认将原生时间对象event传入 即第二个按钮不会+1
           }
       }
    });

    var app9 = new Vue({
      el:"#app9",
      data:{

      },
      methods: {
          handleClick:function(message,event){
            alert(message);
            event.preventDefault();
          }
      },
    });

</script>
</html>

原文地址:https://www.cnblogs.com/linbudu/p/10847603.html

时间: 2024-07-30 17:18:08

Vue.js实战 章五:内置指令的相关文章

Vue源码后记-其余内置指令(2)

-- 指令这个讲起来还有点复杂,先把html弄上来: <body> <div id='app'> <div v-if="vIfIter" v-bind:style="styleObject"> <input v-show="vShowIter" v-model='vModel' /> <span v-once>{{msg}}</span> <div v-html=&qu

vue.js实战学习——内置指令(一)

注:此内容摘抄自:梁灏的<Vue.js实战> 注:记得要引入vue.js才能运行哦,文章中贴出的代码直接复制是不行的,html css js 都放在了一起,而且也没有引用vue.js.   1.v-cloak v-cloak不需要表达式,它会在Vue实例结束编译时从绑定的HTML元素上移除,经常和CSS的display:none: 配合使用. <div class="app1" v-cloak> {{message}} </div> var app1

vue.js实战学习——指令与事件

注:此内容摘抄自:梁灏的<Vue.js实战> 1.指令是Vue.js模版中最常用的一项功能,它带有前缀 v- ,比如:v-if , v-html ,v-pre 等.指令的主要职责就是当其表达式的值改变时,相应的将某些行为应用到DOM上. <div class="app1"> <p v-if="show">哈喽?</p> </div> var app=new Vue({ el:'.app1', data:{

vue内置指令详解——小白速会

指令 (Directives) 是带有 v- 前缀的特殊属性,职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM. 内置指令 1.v-bind:响应并更新DOM特性:例如:v-bind:href  v-bind:class  v-bind:title  等等 主要用法是绑定属性,动态更新HTML元素上的属性: <a v-bind:href="url">...</a> <!-- 缩写 --> <a :href="ur

vue内置指令与自定义指令

一.内置指令 1.v-bind:响应并更新DOM特性:例如:v-bind:href  v-bind:class  v-bind:title  v-bind:bb 2.v-on:用于监听DOM事件: 例如:v-on:click  v-on:keyup 3.v-model:数据双向绑定:用于表单输入等:例如:<input v-model="message"> 4.v-show:条件渲染指令,为DOM设置css的style属性 5.v-if:条件渲染指令,动态在DOM内添加或删除

热烈庆祝《Vue.js 实战教程 V2.x(一)基础篇》上线了!

课程简介 课程地址:https://ke.qq.com/course/432961 机构名称:大华软件学院 授课讲师:大强老师 课程名称:Vue.js 实战教程 V2.x(一)基础篇 课程简介:包括前端发展史.Vue.js简介.第一个Vue.js程序.安装环境和Vue.Vue实例.模板语法.计算属性和侦听器.Class与Style绑定.条件渲染.列表渲染.事件处理.表单输入绑定.组件基础等等. 适合人群: 1.初出茅庐,想学习前端开发的同学: 2.没用过Vue.js,想学习更多框架的同学: 3.

Vue.js学习 Item13 – 指令系统与自定义指令

基础 除了内置指令,Vue.js 也允许注册自定义指令.自定义指令提供一种机制将数据的变化映射为 DOM 行为. 可以用 Vue.directive(id, definition) 方法注册一个全局自定义指令,它接收两个参数指令 ID 与定义对象.也可以用组件的 directives 选项注册一个局部自定义指令. 钩子函数 定义对象可以提供几个钩子函数(都是可选的): bind:只调用一次,在指令第一次绑定到元素上时调用. update: 在 bind 之后立即以初始值为参数第一次调用,之后每当

vue.js实战学习——v-bind 及class与 style绑定

注:此内容摘抄自:梁灏的<Vue.js实战> 注:记得要引入vue.js才能运行哦,文章中贴出的代码直接复制是不行的,html css js 都放在了一起,而且也没有引用vue.js. DOM元素经常会动态的绑定一些class类名或style样式. 1.了解v-bind指令 它的主要用法是动态更新HTML元素上的属性. 在数据绑定中,最常见的两个需求就是元素的样式名称class和内联样式style的动态绑定,他们也是HTML的属性,因此可以使用v-bind指令.我们只需要用v-bind计算出表

Vue08 -- 内置指令

v-cloak 描述:v-cloak不需要表达式,在Vue实例结束编译时从绑定的html元素中移除,通常和css的display:none;配合使用.当网速慢时,Vue没有加载出来时会出现“{{xxx}}”的字样,直到vue创建完实例,DOM才会被替换,所以屏幕会出现闪烁,还需要在css代码中加上:[v-cloak]:{display: none!important;} 联合使用即可,但在工程化的项目中使用webpack和vue-router时,项目的vue结构只有一个空的div,剩余的内容都是