day66

目录

表单指令:

v-model="变量" 变量与value有关

普通:变量就代表value值

单选框:变量是多个单选框中的某一个value值

单一复选框:变量是数组,存放选中的选项value

条件指令

v-show:display:none

v-if:不渲染

v-if | v-else-if | v-else

循环指令

v-for="(v,i) in str | arr"

v-for="(v,k,i) in dic"

sessionStorage | localStorage

前端数据库

临时存储

永久存储

分隔符

delimiters:['{{','}}']

过滤器

{{n1,n2 | f1(30) | f2}}

filters:{

​ f1(n1,n2,n3) {return 过滤结果},

​ f2(f1的res) {return 过滤结果},

}

计算属性

computed:{

​ result() {

//一个方法属性值依赖于多个变量

return this.n1+this.n2;

​ }

}

监听属性

watch:{

​ full_name(n,o){

​ this.first_name = n.split('')[0]

​ this.last_name = n.split('')[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;
            }
        }
    }
        console.log(arr);

知识点总结:

表单指令

v-model可以实现数据的双向绑定:v-model绑定的变量值可以影响表单标签的值,反过来单标签的值也可以影响变量的值

重点

 <input type="text" name="usr" id="usr" placeholder="请输入账号" v-model="v1">
        <input type="text" v-model="v1">
        {{ v1 }}

单选框

男:<input type="radio" name="sex" value="male" v-model="v2">
女:<input type="radio" name="sex" value="female" v-model="v2">
{{ v2 }}

单一复选框

卖身契:同意 <input type="checkbox" name="agree" v-model="v3">
{{ v3 }}

多复选框

爱好:<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 }}

对应data里面的数据

data: {
            v1: '123',
            v2: 'male',
            v3: false,
            v4: ['male', 'female']
        }

条件指令

[v-cloak] 条件指令后面跟{display:none;}

v-show="布尔变量" 隐藏时,采用display:none进行渲染

v-if="布尔变量" 隐藏时,不在页面中渲染(保证不渲染的数据泄露)

循环指令实例

<!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>
<script>
    // 前台数据库
    // localStorage: 永久存储
    // sessionStorage:临时存储(所属页面标签被关闭后,清空)

    // 存
    // localStorage.n1 = 10;
    // sessionStorage.n2 = 20;

    // 取
    // console.log(localStorage.n1);
    // console.log(sessionStorage.n2);

    // 数组等类型需要先序列化成JSON
    // localStorage.arr = JSON.stringify([1, 2, 3]);
    // console.log(JSON.parse(localStorage.arr));

    // 清空数据库
    // localStorage.clear();
</script>
</html>

过滤器总结:

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

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

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

<p>{{ num | f1 }}</p>
<p>{{ a, b | f2(30, 40) | f3 }}</p>
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;
            }
        }
    })

计算属性总结

1、computed计算属性可以声明 方法属性(方法属性一定不能在data中重复声明)

2、方法属性 必须在页面中渲染,才会启用绑定的方法,方法属性的值就是绑定方法的返回值

3、绑定的方法中出现的所有变量都会被监听,任何一个变化发生值更新都会重新出发绑定方法

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

        data: {
            n1: '',
            n2: '',
        },
                computed: {
            result () {
                console.log('被调用了');
                n1 = +this.n1;
                n2 = +this.n2;
                return n1 + n2;
            }
        }

监听事件总结

1、监听的属性需要在data中声明,监听方法不需要返回值

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

3、监听方法有两个回调参数:当前值,上一个值

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

冒泡排序模板

    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);
上一篇:二、Android Studio使用——导入jar包,运行、debug都不是问题


下一篇:Android Studio向项目中导入jar包的方法