1217课堂小结

目录

  • 一、表单指令
  • 二、条件指令
    • 条件指令案例(重点)
  • 三、循环指令
    • 循环指令案例:
  • 四、分隔符
  • 五、过滤器
  • 六、计算属性
  • 七、监听属性
  • 八、冒泡排序
  • 九、斗篷指令

一、表单指令

语法:v-model = "变量",v-model绑定的变量控制的是表单元素的value值。

普通表单元素:用v-model直接绑定变量控制value值。

单选框:以name进行分组,绑定的值为单选框的value值。

单一复选框:v-model绑定的值为true或false。

多个复选框:v-model绑定的值为存储value的数组。

<body>
<div id="app">

<!-- v-model可以实现数据的双向绑定:v-model绑定的变量值可以影响表单标签的值,反过来单标签的值也可以影响变量的值-->
    <form action="">
        <input type="text" name="usr" id="usr" placeholder="请输入账号" v-model="v1">
        <input type="text" v-model="v1">
        {{ v1 }}

        <hr>

        <!--1.单选框-->
        男:<input type="radio" name="sex" value="male" v-model="v2">
        女:<input type="radio" name="sex" value="female" v-model="v2">
        {{ v2 }}

        <hr>

        <!--2.单一复选框-->
        卖身契:同意 <input type="checkbox" name="agree" v-model="v3">
        {{ v3 }}

        <hr>

        <!--3.多复选框-->
        爱好:<br>
        男:<input type="checkbox" name="hobbies" value="male" v-model="v4">
        女:<input type="checkbox" name="hobbies" value="female" v-model="v4">
        哇塞:<input type="checkbox" name="hobbies" value="other" v-model="v4">
        {{ v4 }}
        <hr>

        <button type="submit">提交</button>
    </form>
</div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            v1: '123',
            v2: 'male',
            v3: false,
            v4: ['male', 'female']
        }
    })
</script>
</html>

二、条件指令

条件指令:

  • v-if="true|false":为真时显示;为假时,在页面上不渲染,可以隐藏标签中的信息
  • v-show="true|false":为真时显示;为假时,在页面中用display:none渲染,虽然没显示,但是仍在页面结构中。

v-if 是一个家族:

  • v-if
  • v-else-if
  • v-else

上分支成立,下分支会被屏蔽;else分支只有在所有上分支都为假时显示,且不需要条件。

条件指令案例(重点)

<head>
    <style>
        .box {
            width: 200px;
            height: 200px;
        }
        .r {background-color: red}
        .b {background-color: blue}
        .g {background-color: green}

        .active {
            background-color: deeppink;
        }
    </style>
</head>
<body>
    <div id="app" v-cloak>
        <!--条件指令:
            v-show="布尔变量"   隐藏时,采用display:none进行渲染
            v-if="布尔变量"     隐藏时,不再页面中渲染(保证不渲染的数据泄露)
        -->
        <div class="wrap">
            <div>
                <button @click="page='r_page'" :class="{active: page === 'r_page'}">红</button>
                <button @click="page='b_page'" :class="{active: page === 'b_page'}">蓝</button>
                <button @click="page='g_page'" :class="{active: page === 'g_page'}">绿</button>
            </div>
            <div class="box r" v-if="page === 'r_page'"></div>
            <div class="box b" v-else-if="page === 'b_page'"></div>
            <div class="box g" v-else></div>
        </div>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            page: 'r_page'
        }
    })
</script>
</html>

三、循环指令

v-for="" 语法:v-for="成员 in 容器"

循环指令案例:

<head>
    <style>
        li:hover {
            color: red;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div id="app">
        <input type="text" v-model="comment">
        <button type="button" @click="send_msg">留言</button>
        <ul>
            <li v-for="(msg, i) in msgs" @click="delete_msg(i)">{{ msg }}</li>
        </ul>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            comment: '',
            msgs: localStorage.msgs ? JSON.parse(localStorage.msgs) : [],

        },
        methods: {
            send_msg() {
                if (!this.comment) {
                    alert('请输入内容');
                    return false;
                }
                this.msgs.push(this.comment);
                this.comment = '';

                localStorage.msgs = JSON.stringify(this.msgs);
            },
            delete_msg(index) {
                this.msgs.splice(index, 1);
                localStorage.msgs = JSON.stringify(this.msgs);
            }
        }
    })
</script>
</html>

四、分隔符

用来修改插值表达式符号,避免和其他语法冲突

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>分隔符</title>
</head>
<body>
    <div id="app">
        <p>{{ num }}</p>
        <p>[{ num }]</p>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            num: 100
        },
        // 用来修改插值表达式符号
        delimiters: ['[{', '}]'],
    })
</script>
</html>

五、过滤器

插值表达式{{ 变量 | 过滤器 }}的过滤器由实例成员 filters 来提供

1、在filters成员中定义过滤器方法

2、可以对多个值进行过滤,过滤时还可以额外传入辅助参数

3、过滤的结果可以再进行下一次过滤(过滤的串联)

<body>
    <div id="app">
        <p>{{ num | f1 }}</p>
        <p>{{ a, b | f2(30, 40) | f3 }}</p>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            num: 10,
            a: 10,
            b: 20,
        },
        filters: {
            // 传入所有要过滤的条件,返回值就是过滤的结果
            f1 (num) {
                console.log(num);
                return num * 10;
            },
            f2 (a, b, c, d) {
                console.log(a, b, c, d);
                return a + b + c + d;
            },
            f3 (num) {
                return num * num;
            }
        }
    })
</script>
</html>

六、计算属性

1、computed中定义的是方法属性,data中定义的也是属性,所以不需要重复定义(省略data中的)

2、方法属性的值来源于绑定的方法的返回值,方法属性的值就是绑定方法的返回值

3、方法属性必须在页面中渲染后,绑定的方法才会被启用(调用)

4、方法中出现的所有变量都会被监听,任何变量发生值更新,都会调用一次绑定的方法,重新更新一下方法属性的值

5、方法属性值不能手动设置,必须通过绑定的方法进行设置,一般用来解决的问题:一个变量值依赖于多个变量

<body>
    <div id="app">
        <input type="number" min="0" max="100" v-model="n1">
        +
        <input type="number" min="0" max="100" v-model="n2">
        =
        <button>{{ result }}</button>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            n1: '',
            n2: '',
        },
        computed: {
            result () {
                console.log('被调用了');
                n1 = +this.n1;
                n2 = +this.n2;
                return n1 + n2;
            }
        }
    })
</script>
</html>

七、监听属性

1、监听的属性需要在data中声明,监听方法不需要返回值,watch中给已有的属性设置监听方法

2、监听的方法名就是监听的属性名,该属性值发生更新时就会回调监听方法

3、监听方法有两个回调参数:当前值,上一次值。解决的问题:多个变量值依赖于一个变量值

<body>
    <div id="app">
        <p>姓名:<input type="text" v-model="full_name"></p>
        <p>姓:{{ first_name }}</p>
        <p>名:{{ last_name }}</p>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            full_name: '',
            first_name: '未知',
            last_name: '未知',
        },
        watch: {
            full_name(n, o) {
                name_arr = n.split('');
                this.first_name = name_arr[0];
                this.last_name = name_arr[1];
            },
        }
    })
</script>
</html>

八、冒泡排序

<script>

    let arr = [3, 2, 5, 4, 1];
    console.log(arr);
    for (let i = 0; i < arr.length - 1; i++) {  // 外层循环控制趟数
        for (let j = 0; j < arr.length - 1 - i; j++) {  // 内存循环控制比较次数
            if (arr[j] > arr[j + 1]) {
                let temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    console.log(arr);

    stus = [
        {
            name: 'Bob',
            grade: 98
        },
        {
            name: 'Tom',
            grade: 87
        },
        {
            name: 'Jerry',
            grade: 92
        },
    ];
    // 按照分数进行排名
    for (let i=0; i<stus.length-1; i++) {
        for (let j=0; j<stus.length-1-i; j++) {
            // 处理条件即可
            if (stus[j].grade > stus[j + 1].grade) {
                let temp = stus[j];
                stus[j] = stus[j + 1];
                stus[j + 1] = temp;
            }
        }
    }

    console.log(stus);
</script>
</html>

九、斗篷指令

用来避免页面闪烁,先加载vue环境,有了vue环境后,这个v-cloak属性就被解析了

<head>
    <style>
        [v-cloak] {  /*属性选择器*/
            display: none;
        }
    </style>
</head>
<body>
    <div id="app" v-cloak>
        <p>{{ msg }}</p>
        <p>{{ msg }}</p>
        <p>{{ msg }}</p>
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            msg: 12345
        }
    })
</script>
</html>

原文地址:https://www.cnblogs.com/faye12/p/12056499.html

时间: 2024-10-01 22:42:33

1217课堂小结的相关文章

2015-12-03IOS课堂小结

一.①int age = 20 如上int命名规范,int(大小写字符,数字,下划线)= ()  /括号里面的内容必须由字母开头 当有多个单词组成的变量名中,第一个单词小写,第二个单词首字母大写(往后的单词首字母大写),比如numberOfPeople,同时要见名知义. ②scanf :从终端接收输入 必须严格按照scanf的格式  scanf("   ",&参数):  参数必须是变量的地址,&表示取地址.引号之间不要轻易的区添加空格 get char:从终端一次接收一

0919课堂小结

目录 函数的定义 函数定义的三种方式 空函数 有参函数 无参函数 函数的返回值 return的特性: 函数的三种调用方式 函数的参数 形参 实参 可变长参数 可变长形参* 可变长实参* 函数的定义 函数就是工具, 定义函数方式为 def func(): # def 函数名(): pass # 代码块 函数定义的特性: 函数定义过程, 只检测语法, 不会执行代码, 只有调用时才会执行代码 函数定义的三种方式 空函数 空函数顾名思义就是一个空的函数, 什么代码都没有,它的作用就是占个位置, 在大项目

0929课堂小结

目录 random模块 numpy模块 创建numpy数组 numpy数组的常用属性 获取numpy二数组行列数 切割numpy数组 numpy数组元素替换 numpy数组的合并 numpy常用函数 matplotlib模块 基本的核心使用方法 条形图 直方图 折线图 散点图+直线图 pandas模块 random模块 常用于生成随机数 import random # 大于0且小于1之间的小数 print(random.random()) # 0.9704044132949314 # 大于等于1

1009课堂小结

什么是面向对象 面向对象指的是一门编程思想. # 面向过程编程 核心是"过程"二字,过程指的是做事情的步骤,即先做什么再做什么 基于该编程思想编写程序,就好比一条工厂流水线,一种机械式的思维方式. 优点: 逻辑清晰,复杂的问题流程化,进而简单化. 缺点: 可扩展性差. 面向对象编程 核心是"对象"二字,对象指的是特征与技能的结合体. 基于该编程思想编写程序,就好比在创造世界,一种上帝式的思维方式. 优点: 可扩展性高. 缺点: 编写程序的复杂程度要远高于面向过程编程

1031课堂小结

目录 python 操作mysql 安装pymysql 模块 sql注入问题 产生的原因 解决的方法 连接 查 增 修 删 索引 使用索引的作用 索引的本质 索引的底层原理 索引的种类 索引的创建 主键索引 唯一索引 普通索引 索引的优缺点 不会命中索引的情况 慢查询日志 查看慢SQL的相关变量 配置慢SQL的变量 python 操作mysql 安装pymysql 模块 pip install pymysql sql注入问题 输入用户名:qaa ' or 1=1 # 输入密码:dasdasdsa

1104课堂小结

exec exec是什么 exec 是一个python的内置模块 exec的作用 可以把'字符串形式'的python代码,添加到全局或者局部名称空间中 exec的使用方法 参数一:字符串形式的python代码 参数二:全局名称空间字典 参数三:局部名称空间字典 调用exec() 元类 什么是元类 元类就是类的类,Chinese类的类是type,type是所有类的类,所以type就是一个元类 元类的作用 元类可以帮我们控制类的创建和调用 怎么自定义创建元类 自定义一个元类,继承type,派生出自己

1115课堂小结

目录 JavaScript 注释 js的引入方式 js里面的变量 js变量的命名规范 js常量 js中的数据类型 运算符 算数运算符 比较运算符 逻辑运算符 赋值运算符 三元运算符 流程控制 if-else if-else else-if switch for while 函数 无参函数 有参函数 匿名函数 立即执行函数 箭头函数 函数的全局变量和局部变量 自定义对象 Date对象 json对象 RegExp对象 JavaScript 是前端的一门编程语言 注释 // 单行注释 /* 多行注释1

软件项目管理与素质拓展-2.3项目管理是残缺的美

2.3.1 路易10世的地牢 课堂讨论2?1 路易10世的地牢 你是路易10世的俘虏.他要给自己的城堡增加三个新地牢,让你做一个规划.干得好就释放,干不好就终生监禁. 小地牢很难设计,要12周,但容易建成,1周即可: 中地牢设计要5周,施工要6周: 大地牢设计只要1周,但建造要用9周: 每种地牢必须设计全部完成后才能着手建造: 你有远道而来的一个设计师和一个建筑师: 设计师不会建造而建筑师不会设计. 问:要建好这三个地牢,你该如何规划? 首先,我们认真分析下地牢建造中的“项目三角形”有什么特点,

金蝶K3商业智能免费版财务分析(下)课程系列开课了

上周刚听完奥威Powerbi的金蝶K3商业智能免费版针对财务分析的课程还意犹未尽的同学,这节课精彩继续!讲师为我们带来基于金蝶K3商业智能免费版的数据分析教学下篇——资产负债分析和利润分析. 资产负债表和利润表,两个财务报表中最重要的报表,在Power-BI平台上也能分析自如?这种技能又该怎么实现?这节课讲师为你详细解读. 讲师介绍:黄沛霓 现任奥威软件BI实施顾问,擅长SqlServers.ETL和数据建模,熟悉各大主流ERP软件.财务高级指标的计算和分析. 直播时间:2017年3月15日晚上