Vue框架学习(第五课)计算属性和监听器

简介: Vue框架学习(第五课)计算属性和监听器

一直向前走。千万别向后看。否则就永远回不去那个世界了

计算属性 | Vue.js (vuejs.org)


computed属性


计算属性:在模版中可以直接通过插值语法显示一些data中的数据,但有时我们可能需要对数据进行一些处理和转化后再显示,或者需要将多个数据结合起来进行显示,此时就要用到计算属性。


function FistFunctionFmethod() {
            alert("开始学习Vue.js")
            const app = Vue.createApp({
                data() {
                    return {
                        lastNme: '星辰',
                        FistName: '大海',
                        scor: 60,
                    }
                },
                methods: {
                    showName() {
                        console.log("调用属性的信息函数showName() ")
                        return this.FistName + this.lastNme
                    },
                    update() {
                        console.log("调用属性的信息函数update ")
                        this.FistName = "Hellow"
                    },
                    getsort() {
                        console.log("调用属性的信息函数  getsort() ")
                        return this.scor >= 60 ? '及格' : '不及格'
                    },
                },
                // computed的属性
                computed: {
                    getsort1() {
                        console.log("操作成绩")
                        return this.scor >= 60 ? "及格" : "不及格";
                    },
                    cshowName() {
                        console.log("操作姓名")
                        return this.FistName + this.lastNme
                    },
                    showget: {
                        get() {
                            console.log("get")
                            return this.FistName + this.lastNme
                        },
                    },
                    set(value) {
                    }
                }
            })
            app.mount("#app")
        }
        FistFunctionFmethod()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 计算机属性 -->
    <div id="app">
        <h1>{{lastNme+' '+FistName}}</h1>
        <h1>{{ showName()}}</h1>
        <h1>{{cshowName}}</h1>
        <h2>{{getsort()}}</h2>
        <h2>{{getsort1}}</h2>
        <button @click=" update">按钮</button>
        <h1>showget</h1>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        function FistFunctionFmethod() {
            alert("开始学习Vue.js")
            const app = Vue.createApp({
                data() {
                    return {
                        lastNme: '星辰',
                        FistName: '大海',
                        scor: 60,
                    }
                },
                methods: {
                    showName() {
                        console.log("调用属性的信息函数showName() ")
                        return this.FistName + this.lastNme
                    },
                    update() {
                        console.log("调用属性的信息函数update ")
                        this.FistName = "Hellow"
                    },
                    getsort() {
                        console.log("调用属性的信息函数  getsort() ")
                        return this.scor >= 60 ? '及格' : '不及格'
                    },
                },
                // computed的属性
                computed: {
                    getsort1() {
                        console.log("操作成绩")
                        return this.scor >= 60 ? "及格" : "不及格";
                    },
                    cshowName() {
                        console.log("操作姓名")
                        return this.FistName + this.lastNme
                    },
                    showget: {
                        get() {
                            console.log("get")
                            return this.FistName + this.lastNme
                        },
                    },
                    set(value) {
                    }
                }
            })
            app.mount("#app")
        }
        FistFunctionFmethod()
    </script>
</body>
</html>



watch属性


Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性watch。watch中可以执行任何逻辑,如函数节流,Ajax异步获取数据,甚至操作 DOM(不建议)。

function FistFunctionFmethod() {
            // alert("开始学习Vue.js")
            const app = Vue.createApp({
                data: function () {
                    return {
                        obj: {
                            a: 0,
                            b: 0,
                            c: 0,
                            d: 0
                        },
                        array:["ASD","LOKJ","POU"],
                        info: "我是数据的监听者的信息"
                    }
                },
                watch: {
                    info: {
                        immediate: true,
                        handler: function (newVal, oldVal) {
                            // 两个参数
                            console.log("新的数据" + newVal);
                            console.log("旧的数据" + oldVal);
                        }
                    },
                    // 对象里面的key最传统的方式加引号
                    'obj.a': {
                        // 因为对象是引用数据类型 所以每次值发生了变化 对应的内存地址 没有发生变化 所以 newVal, oldVal 同一个
                        deep: true,
                        immediate: true,
                        handler: function (newVal, oldVal) {
                            // 两个参数
                            console.log("新的对象数据objecta" + newVal + " ");
                            console.log("旧的对象数据objecta" + oldVal + " ");
                        },
                        obj:{
                            // deep: true,
                            immediate: true,
                            handler: function (newVal, oldVal) {
                                // 两个参数
                                console.log("新的对象数据object" + newVal['a']);
                                console.log("旧的对象数据object" + oldVal['a']);
                            },
                        }
                    }
                },
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<!--!Watch的使用-->
<body>
    <div id="app">
        <h1 @click="add">{{info}}</h1>
        <h2 @click="obj.a++">{{obj.a}}</h2>
        <h2 @click="obj.b">{{obj.b}}</h2>
        <h2 @click="obj.c++">{{obj.c}}</h2>
        <h2 @click="obj.a--">{{obj.d}}</h2>
    </div>
    <script src="../DayVue02/js/vue.js"></script>
    <script>
        function FistFunctionFmethod() {
            // alert("开始学习Vue.js")
            const app = Vue.createApp({
                data: function () {
                    return {
                        obj: {
                            a: 0,
                            b: 0,
                            c: 0,
                            d: 0
                        },
                        array:["ASD","LOKJ","POU"],
                        info: "我是数据的监听者的信息"
                    }
                },
                watch: {
                    info: {
                        immediate: true,
                        handler: function (newVal, oldVal) {
                            // 两个参数
                            console.log("新的数据" + newVal);
                            console.log("旧的数据" + oldVal);
                        }
                    },
                    // 对象里面的key最传统的方式加引号
                    'obj.a': {
                        // 因为对象是引用数据类型 所以每次值发生了变化 对应的内存地址 没有发生变化 所以 newVal, oldVal 同一个
                        deep: true,
                        immediate: true,
                        handler: function (newVal, oldVal) {
                            // 两个参数
                            console.log("新的对象数据objecta" + newVal + "&nbsp;");
                            console.log("旧的对象数据objecta" + oldVal + "&nbsp;");
                        },
                        obj:{
                            // deep: true,
                            immediate: true,
                            handler: function (newVal, oldVal) {
                                // 两个参数
                                console.log("新的对象数据object" + newVal['a']);
                                console.log("旧的对象数据object" + oldVal['a']);
                            },
                        }
                    }
                },
                methods: {
                    add() {
                        this.info = '1233'
                    }
                }
            })
            app.mount("#app")
        }
        FistFunctionFmethod()
    </script>
</body>
</html>




V-model的使用


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="./js/vue.js"></script>
    <div id="app">
        账号:<input type="text" v-model="message">
        <textarea v-model="textarea" name="" id="" cols="30" rows="10"></textarea>
        {{textarea}}
        <h1>{{message}}</h1>
        单选框: <input type="radio" name="" id="" value="同意用户信息" v-model="radio">
        单选框: <input type="checkbox" name="" id="" value="同意用户信息" v-model="radio">
        <h1>radio:{{radio}}</h1 <input type="checkbox" value="1" v-model="like">1
        <input type="checkbox" value="2" v-model="like">2
        <input type="checkbox" value="3" v-model="like">3
        <input type="checkbox" value="4" v-model="like">4
        <input type="checkbox" value="5" v-model="like">5
        <input type="checkbox" value="6" v-model="like">6
        <h2>like:{{like}}</h2>
        <h1>
            <input type="radio" name="sex" id="" v-model="sex" value="man">男
            <input type="radio" name="sex" id="" v-model="sex" value="women">女
            <input type="radio" name="sex" id="" v-model="sex" value="un">未知
            <h1>sex:{{sex}}</h1>
        </h1>
        <h1>下拉表</h1>
        <select name="" id="" v-model="arry" multiple size="2">
            <option value="" v-for="item in firut" key="item" value="item" >{{item}}</option>
        </select>
        <!-- <select name="" id="" v-model="arrys" multiple> -->
            <!-- <option value="" v-for="item.value in firut1" key="item" value="item.value">{{item.value}}</option> -->
            <!-- <h1>arrys:{{arrys}}</h1> -->
        <!-- </select> -->
    </div>
    <script>
        function FistFunctionFmethod() {
            alert("开始学习Vue.js")
            const app = Vue.createApp({
                data: function () {
                    return {
                        message: "数据内容一",
                        password: '123344',
                        textarea: "",
                        radio: '',
                        // 有多个
                        like: [],
                        sex: "man",
                        firut: ["苹果", "香蕉", "西瓜", "葡萄","梨子"],
                        firut1: [
                            {
                                label: "苹果",
                                value: "apple"
                            },
                            {
                                label: "香蕉",
                                value: "banner"
                            },
                            {
                                label:"西瓜",
                                value:"womment"
                            }
                        ],
                        arry: '',
                        arrays:""
                    }
                },
                methods: {
                }
            })
            app.mount("#app")
        }
        FistFunctionFmethod()
    </script>
</body>
</html>

 function FistFunctionFmethod() {
            alert("开始学习Vue.js")
            const app = Vue.createApp({
                data: function () {
                    return {
                        message: "数据内容一",
                        password: '123344',
                        textarea: "",
                        radio: '',
                        // 有多个
                        like: [],
                        sex: "man",
                        firut: ["苹果", "香蕉", "西瓜", "葡萄","梨子"],
                        firut1: [
                            {
                                label: "苹果",
                                value: "apple"
                            },
                            {
                                label: "香蕉",
                                value: "banner"
                            },
                            {
                                label:"西瓜",
                                value:"womment"
                            }
                        ],
                        arry: '',
                        arrays:""
                    }
                },
                methods: {
                }
            })
            app.mount("#app")
        }
        FistFunctionFmethod()
相关文章
|
1天前
|
JavaScript
|
2天前
|
JavaScript UED
Vue + ElementUI 实现动态添加和删除表单项的多层嵌套表单
【10月更文挑战第5天】本示例展示了如何在 Vue.js 中使用 Element UI 组件实现动态添加和删除嵌套表单项。该表单包含设备信息、设备部位及其对应的任务列表,支持用户动态添加设备部位和任务,并提供相应的表单验证规则。
20 0
Vue + ElementUI 实现动态添加和删除表单项的多层嵌套表单
|
1天前
|
JavaScript 前端开发 容器
vue的哈希模式下乾坤微应用的使用
vue的哈希模式下乾坤微应用的使用
|
3天前
|
JavaScript 前端开发 开发者
Vue v-for 进阶指南:in 与 of 的区别及应用场景 | 笔记
Vue.js 中的 v-for 是强大的遍历指令,但其中的 in 和 of 关键字往往被开发者忽视。尽管它们的用法相似,但适用的场景和数据结构却各有不同。本文将详细探讨 v-for 中 in 和 of 的区别、适用场景以及在实际开发中的最佳使用时机。通过理解它们的差异,你将能够编写更加高效、简洁的 Vue.js 代码,灵活应对各种数据结构的遍历需求。
37 6
|
3天前
|
缓存 JavaScript 前端开发
Vue 中动态导入的注意事项
【10月更文挑战第12天】 在 Vue 项目中,动态导入是一种常用的按需加载模块的技术,可以提升应用性能和效率。本文详细探讨了动态导入的基本原理及注意事项,包括模块路径的正确性、依赖关系、加载时机、错误处理、缓存问题和兼容性等,并通过具体案例分析和解决方案,帮助开发者更好地应用动态导入技术。
|
3天前
|
JavaScript API
vue 批量自动引入并注册组件或路由等等
【10月更文挑战第12天】 vue 批量自动引入并注册组件或路由等等
|
3天前
|
JavaScript 算法 前端开发
深入剖析Vue中v-for的使用及index作为key的弊端
深入剖析Vue中v-for的使用及index作为key的弊端
10 2
|
3天前
|
JavaScript
《进阶篇第9章》学习vuex知识点后练习:求和案例_纯vue版代码
《进阶篇第9章》学习vuex知识点后练习:求和案例_纯vue版代码
9 1
|
3天前
|
JavaScript 前端开发 UED
vue中vue-router路由懒加载(按需加载)的作用以及常见的实现方法
vue中vue-router路由懒加载(按需加载)的作用以及常见的实现方法
27 1
|
4天前
|
JavaScript
vue 组件中的 data 为什么是一个函数 ?
【10月更文挑战第8天】 在 Vue 组件中,`data` 被定义为一个函数而非普通对象,以确保每个组件实例拥有独立的数据空间,避免数据混乱。这种方式还支持数据的响应式更新、组件的继承与扩展,并有助于避免潜在问题,提升应用的可靠性和性能。
12 2