表单、条件、循环指令,分隔符,前端数据库,过滤器,计算属性,监听属性,冒泡排序

目录

  • 一、 表单指令

    • 1. v-model = "变量"

      • (1)普通input框
      • (2)单选input框
      • (3)单一复选input框
      • (4)多复选input框
    • 2. 实例
  • 二、条件指令
    • 1. v-show="布尔变量"
    • 2. v-if="布尔变量"
    • 3. v-if v-else-if v-else
    • 4. 实例
  • 三、循环指令
    • 1. v-for="变量 in 可迭代对象"

      • (1)遍历字符串或数组
      • (2)遍历对象(字典)
    • 2. 实例
  • 四、前端数据库
    • 1. localStorage

      • (1)字符串的存取
      • (2)数组等其他类型数据的存取
  • 2. sessionStorage
    • (1)字符串的存取
    • (2)数组等其他类型数据的存取
    • 3. for循环的案例
  • 五、分隔符
  • 六、过滤器
  • 七、计算属性
  • 八、监听属性
  • 九、冒泡排序

一、 表单指令

1. v-model = "变量"

  • v-model可以实现数据的双向绑定(即其变量所在的任何位置,只要变量的值改变,所有该变量的值都同时修改更新)

(1)普通input框

  • 变量值就是value的值

(2)单选input框

  • 变量值为多个单选框中,某一个value值

(3)单一复选input框

  • 变量值为布尔,代表是否选中

(4)多复选input框

  • 变量为数组,存放选中的选项的value

2. 实例

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>表单指令</title>
</head>
<body>
<div id="app">
    <!--表单指令:  v-model="变量"   变量值与表单标签的value相关
        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>

二、条件指令

1. v-show="布尔变量"

  • 当布尔变量的值为true时,显示并渲染本标签
  • 当布尔变量的值为false时,在浏览器上展示本标签,但隐藏渲染标签。(即标签含有 display:none 样式)

2. v-if="布尔变量"

  • 当布尔变量的值为true时,显示并渲染本标签
  • 当布尔变量的值为false时,在浏览器上的html代码中没有本标签。

3. v-if v-else-if v-else

  • v-if="布尔变量"的用法一致

4. 实例

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        [v-cloak] { display: none; }

        .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="布尔变量"     隐藏时,不再页面中渲染(保证不渲染的数据泄露)
            -----------------------------
            v-if | v-else-if | v-else
        -->
        <div class="box r" v-show="is_show"></div>
        <div class="box b" v-if="is_show"></div>
        <hr>

        <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: {
            is_show: false,
            page: 'r_page'
        }
    })
</script>
</html>

三、循环指令

1. v-for="变量 in 可迭代对象"

(1)遍历字符串或数组

v-for="v in str|arr"  <!--v为值-->
v-for="(v, i) in str|arr"  <!--v为值,i为索引-->

(2)遍历对象(字典)

v-for="v in dic"  <!--v为值-->
v-for="(v, k) in dic"  <!--v为字典的value,k为字典的key-->
v-for="(v, k, i) in dic"  <!--v为字典的value,k为字典的key,i为key的索引(对字典的key优化过了,所以有索引)--> 

2. 实例

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>循环指令</title>
</head>
<body>
    <div id="app">
        <!--循环指令:
            v-for="ele in string|array|obj"
        -->
        <span>{{ info }}</span>
        <hr>
        <i v-for="c in info">{{ c }} </i>
        <hr>
        <i v-for="(c, i) in info">{{i}}:{{c}}<br></i>
        <hr>

        <div v-for="e in stus">{{ e }}</div>
        <hr>
        <div v-for="(e, i) in stus">{{ i }}:{{ e }}</div>
        <hr>

        <div v-for="v in people">{{ v }}</div>
        <hr>
        <div v-for="(v, k, i) in people">{{ i }} - {{ k }}:{{ v }}</div>
        <hr>

        <div v-for="tea in teas">
            <span v-for="(v, k, i) in tea"><span v-if="i !== 0"> | </span>{{ k }}:{{ v }}</span>
        </div>

    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            info: 'good good study',
            stus: ['Bob', 'Tom', 'Jerry'],
            people: {
                name: '猴子',
                age: 36.7,
                sex: '女',
            },
            teas: [
                {
                    name: 'jason',
                    age: 73,
                    sex: '男',
                },
                {
                    name: 'egon',
                    age: 74,
                    sex: '男',
                },
                {
                    name: 'owen',
                    age: 17.5,
                    sex: '男',
                }
            ]
        }
    })
</script>
</html>

四、前端数据库

  • 前端浏览器都自带数据库,下面介绍两个前端的数据库

1. localStorage

  • 永久存储

(1)字符串的存取

// 存
localStorage.变量名 = 变量值;

// 取
localStorage.变量名

(2)数组等其他类型数据的存取

  • 数组等类型需要先序列化成JSON
// 存
localStorage.数组名 = JSON.stringify(数组值);

// 取
JSON.parse(localStorage.数组名)

// 清空数据库
localStorage.clear();

2. sessionStorage

  • 临时存储(标签所属页面被关闭后,清空数据库)

(1)字符串的存取

// 存
sessionStorage.变量名 = 变量值;

// 取
sessionStorage.变量名

(2)数组等其他类型数据的存取

  • 数组等类型需要先序列化成JSON
// 存
sessionStorage.数组名 = JSON.stringify(数组值);

// 取
JSON.parse(sessionStorage.数组名)

// 清空数据库
sessionStorage.clear();

3. for循环的案例

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>todo list 案例</title>
    <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() {
                // 将comment添加到msgs数组中:unshift push 首尾增 | shift pop 首尾删
                // this.msgs.push(this.comment);

                // 数组操作最全方法:splice(begin_index, count, ...args)
                // this.msgs.splice(0, 2);

                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>

五、分隔符

  • 分隔符就是当vue的插值语法即{{ }}与其他的框架的语法相冲突时,我们可以通过分隔符来修改vue的插值语法。
  • delimiters: [‘[{‘, ‘}]‘], // 修改插值表达式符号,将原来的 {{ }} 修改成 [{ }]
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div id="app">
        {{ msg }}
        [{ msg }]
    </div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            msg: 'message'
        },
        delimiters: ['[{', '}]'],  // 修改插值表达式符号,将原来的  {{ }} 修改成 [{ }]
    })
</script>
</html>

六、过滤器

  • vue的过滤器都需要自己定义,但其自定义过滤器的方法非常简单
  • 自定义过滤器方法
    '''
    1、在filters成员中定义过滤器方法
    2、可以对多个值进行过滤,过滤时还可以额外传入辅助参数
    3、过滤的结果可以再进行下一次过滤(过滤的串联)
    
    语法:
    
    {{ n1, n2 | f1(30) | f2 }}
    
    filters: {
          f1(n1,n2,n3) {return 过滤结果},
          f2(f1的res) {return 过滤结果},
      }
    
    '''
  • 实例
    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>过滤器</title>
    </head>
    <body>
        <div id="app">
            <!--
            总结:
            1、在filters成员中定义过滤器方法
            2、可以对多个值进行过滤,过滤时还可以额外传入辅助参数
            3、过滤的结果可以再进行下一次过滤(过滤的串联)
            -->
            <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中重复声明)
2、方法属性 必须在页面中渲染,才会启用绑定的方法,方法属性的值就是绑定方法的返回值
3、绑定的方法中出现的所有变量都会被监听,任何一个变量的值变化、更新都会重新触发绑定方法,从而更新方法属性的返回值

一般用来解决的问题:一个变量值依赖于多个变量

'''
  • 实例
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<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: '',
            // result: 0,  // 不能在data中重复声明
        },

        computed: {
            result () {
                console.log('被调用了');
                n1 = +this.n1;
                n2 = +this.n2;
                return n1 + n2;
            }
        }
    })
</script>
</html>

八、监听属性

  • 使用和注意
'''

1、监听的属性需要在data中声明,监听方法不需要返回值
2、监听的方法名就是监听的属性名,该属性值发生更新时就会回调监听方法
3、监听方法有两个回调参数:当前值,上一次值

 解决的问题:多个变量值依赖于一个变量值

'''
  • 实例
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<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: {
            // n是监听的属性当前值,o是其上一次的值,监听的属性值每次更新都会回调监听方法
            full_name(n, o) {
                name_arr = n.split('');
                this.first_name = name_arr[0];
                this.last_name = name_arr[1];
            },
        }
    })
</script>
</html>

九、冒泡排序

  • 公式
// 按照分数进行排名
    for (let i=0; i<可迭代对象.length-1; i++) {
        for (let j=0; j<可迭代对象.length-1-i; j++) {
            // 处理条件即可
            if ( a>b ) {  // 排序方式
                // 交叉赋值,互换位置
                a,b = b,a
            }
        }
    }
  • 实例
// 对数组排序
let arr = [3, 2, 5, 4, 1];

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;
            }
        }
    }

// 对字典排序

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;
            }
        }
    }

原文地址:https://www.cnblogs.com/Mcoming/p/12056488.html

时间: 2024-08-27 23:03:43

表单、条件、循环指令,分隔符,前端数据库,过滤器,计算属性,监听属性,冒泡排序的相关文章

基于Extjs的web表单设计器 第五节——数据库设计

这里列出表单设计器系列的内容,6.7.8节的内容应该在春节后才有时间出了.因为这周末就请假回老家了,准备我的结婚大事.在此提前祝大家春节快乐! 基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extjs的web表单设计器 第四节——控件拖放 基于Extjs的web表单设计器 第五节——数据库设计 基于Extjs的web表单设计器 第六节——界面框架设计

v-once指令、v-cloak指令、条件指令家族、原义指令、循环指令、todolist案例、实例成员-符号、实例成员-计算属性、实例成员-属性监听、监听的案例、局部组件、全局组件、组件交互(父传子、子传父)

v-once指令: v-once:单独使用,限制的标签内容一旦赋值,便不可被动更改(如果是输入框,可以主动修改) <div id="app"> <input type="text" v-model="msg"> <!-- 一旦赋值,只可主动更改 --> <input type="text" v-model="msg" v-once> <p>{{ m

Android数据库内容变化的监听

首先介绍内容监测的基本模式 基于uri的内容监测的基本模式被android.content.ContentResolver实现. 它为基于Uri的内容监测的提供了一个平台.(其实如果有必要,我们可以自己实现一个)ContentResolver为此提供了三个方法:注册监听器到某个uripublic final void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer)

简单的vue.js的表单提交数据至flask然后数据库入库,再将表里面的数据展示在网页

一.先在数据库中创建表格 在mysql中建users库并建立一个含有ID,username,email三个字段的user表 二.去vue的组件里面写页面的表单代码,注意form标签里的action需要暂时先空着,等flask的代码写完后填入flask的链接地址 然后将这个vue.js需要在index.js里面配置 三.用python实现连接数据库,获取表单数据并入库 四,将写入到数据库表格的内容写入到网页中,在网页展示 别忘了在vue的form标签的action属性加入flask的地址  效果展

表单、框架结构的大概、CSS开头(选择器以及常用属性)

<!--为网页添加图标,写在头部--> <link rel="shortcut icon" href="favicon.ico(路径)" type="image/x-icon"> 表单fieldset legend定义表单元素的标题 from(供用户输入的表单) <from action="后台名" method="post/get" enctype="multipa

启动数据库、服务、监听

$ emctl stop dbconsole $ isqlplusctl stop $ lsnrctl stop

按下enter键后表单自动提交问题

在HTML的form表单里,按下enter键之后,默认情况下表单会自动提交. 在公司一个项目里,按下enter键自动提交表单的查询结果与按下搜索框的搜索结果页面显示不一样,按下搜索按钮之后是通过Ajax请求返回结果:而按下enter键是直接post请求然后跳转返回一个页面,失去了页面样式及导航等. 一开以为是写了js代码导致按下enter键之后会触发表单提交,后来把js代码全部移除也是一样地按下enter键会触发表单提交.到网上搜索发现是因为默认情况下在form表单内按下enter键会触发表单自

1217 表单 循环 成员

目录 今日内 容 1.表单指令 v-model='变量' 1.1 数据的双向绑定 1.2 单选框 1.3 单一复选框 1.4 多复选框 2. 斗篷指令 3.条件指定 v-if='布尔变量' v-if='布尔变量' 家族 4. 循环指令 v-for=" " 数组操作splice 数据库 5. 成员 5.1 分隔符成员 delimiters:["",""] 5.2 过滤器成员 {{ num | fn }} 5.3 计算属性成员 computed 5.

Java+MyEclipse+Tomcat (四)Servlet提交表单和数据库操作

前面三篇文章讲述了如何配置MyEclipse和Tomcat开发JSP网站.如何配置Servlet简单实现表单提交.如何配置MySQL实现JSP数据库查询. 这篇文章主要讲述Servlet表单的提交.Java中实现数据库的查询操作和自己遇到的瓶颈及理解.Java Web基础性文章,希望对大家有所帮助~ Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门 Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交 Java+MyEclipse+