vue学习第二天——表单修饰符、自定义指令、侦听器、计算属性、过滤器、生命周期、ES6常用方法

《Sigrity SystemSI 2023+LPDDR4仿真自学笔记》(一)创建工程(Part1) 为了加强SystemSI 2023软件的熟悉度,咱们完整的走一个仿真全流程。 阅读详情

mvvm:m:数据层;v:视图层;vm:控制器,实现数据层和视图层的数据保持一直(实现同步)

<script>
        var str = "hello";
        // split("")将字符串分割成数组
        // reverse()颠倒数组的顺序
        // join("")将数组变成一个字符串
        str = str.split("").reverse().join("");
        console.log(str);
    </script>

表单修饰符:

<!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>表单修饰符</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="app">
        <input type="text" v-model.trim="txt">
        <br>
        <button @click="fn">确定</button>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                txt: "123456"
            },
            methods: {
                fn() {
                    console.log(this.txt.length);
                }
            }
        })
    </script>
</body>

</html>
<!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>获取单选框的值</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="app">
        <input type="radio" id="male" name="sex" value="1" v-model="val">
        <label for="male">男</label>
        <input type="radio" id="female" name="sex" value="2" v-model="val">
        <label for="female">女</label>
        <br />
        <span>爱好:</span>
        <input type="checkbox" id="ball" value="1" v-model="hobby">
        <label for="ball">篮球</label>
        <input type="checkbox" id="sing" value="2" v-model="hobby">
        <label for="sing">唱歌</label>
        <input type="checkbox" id="code" value="3" v-model="hobby">
        <label for="code">写代码</label>
        <br>
        <!-- multiple:多选 -->
        <select v-model="op" multiple>
            <option value="0">请选择职业</option>
            <option value="1">教师</option>
            <option value="2">软件工程师</option>
            <option value="3">律师</option>
        </select>
        <br>
        <textarea v-model="desc"></textarea>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                val: "1",
                hobby: [1, 2],
                // 若没有设置多选,op对应的值就是一个数值:"1";有多选,则是一维数组
                op: [1, 2],
                desc: "你好"
            }
        })
    </script>

</body>

</html>
<!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>自定义指令</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="app">
        <input type="text" v-focus>
        <input type="text" v-color="msg" class="txt">

    </div>
    <script>
        // 第一个参数的是指令的名称
        // 多个文本框绑定v-focus,只有一个有效,只作用于最后一个
        Vue.directive("focus", {
            // e是当前元素
            inserted: function (e) {
                e.focus();
                // console.log(e);
            }
        });
        Vue.directive("color", {
            // e是当前元素
            bind: function (e, binding) {
                console.log(binding);
                e.style.backgroundColor = binding.value.color;
            }
        });
        var vm = new Vue({
            el: "#app",
            data: {
                msg: {
                    color: "blue"
                }
            }
        })
    </script>
</body>

</html>
<!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>侦听器</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="app">
        姓:<input type="text" v-model="lName"><br>
        名:<input type="text" v-model="fName"><br>
        <p>{{aName}}</p>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                fName: "",
                lName: "",
                aName: ""
            },
            methods: {

            },
            computed: {

            },
            watch: {
                fName: function (val) {
                    // console.log(val);
                    this.aName = this.lName + val;
                },
                lName: function (val) {
                    console.log(val);
                    this.aName = val + this.fName;
                }
            }
        })
    </script>

</body>

</html>
<!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>计算属性</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="app">
        <!-- 方法调用 -->
        <h3>{{reverseMsg()}}</h3>
        <!-- 计算属性后面不永嘉括号,就只写方法名 -->
        <!-- 我是计算属性只输出一次,但是olleh,输出4次 -->
        <h3>{{reverseStr}}</h3>
        <h3>{{reverseStr}}</h3>
        <h3>{{reverseStr}}</h3>
        <h3>{{reverseStr}}</h3>

        <!-- 方法和计算属性的区别:计算属性是基于依赖进行缓存的,只执行一次,而方法不缓存,重新执行 -->
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                msg: "hello"
            },
            methods: {
                reverseMsg() {
                    return this.msg.split("").reverse().join("");
                }
            },
            // 计算属性
            computed: {
                reverseStr() {

                    console.log("我是计算属性");
                    return this.msg.split("").reverse().join("");
                }
            }
        })
    </script>
</body>

</html>
<!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>过滤器</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="app">
        <h3>{{msg|lower}}</h3>
        <!-- num:x;1:a;2:b -->
        <h3>{{num|str(1,2)}}</h3>
    </div>
    <script>
        // 过滤器
        Vue.filter("lower", function (v) {
            // 首个字母大写,再拼接出来首字母之外的字符
            return v.charAt(0).toLowerCase() + v.slice(1);          //school
        });
        // x:num;a:1;b:2
        Vue.filter("str", function (x, a, b) {
            if (x > 10) {
                return x + a;
            } else {
                return x + b;

            }
        })
        let vm = new Vue({
            el: "#app",
            data: {
                msg: "School",
                num: 11
            }
        })
    </script>
</body>

</html>
<!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>生命周期</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="app">
        <h3>{{msg}}</h3>
        <!-- 点击之后更新数据 -->
        <button @click="fn">点我</button>
        <!-- 确认销毁 -->
        <button @click="del">销毁当前vue</button>
    </div>
    <script>
        let vm = new Vue({
            el: "#app",
            data: {
                msg: "hello"
            },
            methods: {
                fn() {
                    // 数据更新
                    this.msg = "hihihihi";
                },
                del() {
                    if (confirm("你确定要销毁当前Vue吗?")) {
                        // 销毁vue对象
                        this.$destroy();
                    }
                }
            },
            // 分为四个大的阶段,每个大阶段分有两个小阶段(前后),每个步骤只有一次
            // msg、methods初始化之前
            beforeCreate: function () {
                console.log("beforeCreate");
                console.log(this.msg);      //undefined,msg还未初始化
            },
            // msg、methods已初始化完成,msg、methods出现的最早位置
            created: function () {
                console.log("created");
                console.log(this.msg);
            },
            // 挂载前
            beforeMount: function () {
                console.log("beforeMount");
                console.log(document.querySelector("h3").innerHTML);        //{{msg}},在此步骤,还未渲染
                console.log(this.msg);

            },
            // 挂载后,在此步骤可以操作DOM节点了
            mounted: function () {
                console.log("mounted");
                console.log(document.querySelector("h3").innerHTML);        //hello
                console.log(this.msg);
            },
            // 在此阶段之前的函数都是自动执行的
            // 到此阶段,已经脱离了创建阶段,进入了运行阶段
            // 这两个阶段会根据data数据的改变而选择性的触发0次到多次
            // 数据更新前
            beforeUpdate: function () {
                console.log("beforeUpdate");
                console.log(document.querySelector("h3").innerHTML);
            },
            // 数据更新后
            updated: function () {
                console.log("updated");
                console.log(document.querySelector("h3").innerHTML);
            },
            beforeDestroy: function () {
                console.log("beforeDestroy");
                console.log(this.msg);
                this.fn();
            },
            destroy: function () {
                console.log("destroy");
                console.log(this.msg);
            },
            // render()是一个渲染函数,创建一个新的标签元素,把之前的元素全部清掉
            // render: function (createElement) {
            //     return createElement('h1', "this is a h1");
            // }
            // el是一个函数;里面的两个参数:第一个参数是创建的标签类型,菲尔格参数是标签内容
            // 调用时,记得把console.log(document.querySelector("h3").innerHTML);注释掉,不然就会报错,因为h3已经不存在了
            // render(el) {
            //     return el("div", "我是一个div独苗") ;
            // }
        })
    </script>
</body>

</html>
<!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>es6常用方法</title>
</head>

<body>
    <script>
        var arr = [20, 10, 15, 19, 30, 7, 19, 25, 31];
        // 找到了满足条件的就停止
        var newArr = arr.find((v, i) => {
            return v > 20;
            // return返回的是逻辑值,没有就返回undefined
        })
        console.log(newArr);        //30
        var index = arr.findIndex((v, i) => {
            return v > 20;
        })
        console.log(index);     //30
        // item => item > 20,=>后面没有用大括号,自动返回值,省略了return
        var newa = arr.filter(item => item > 20);
        console.log(newa);      //[30,25,31]
        // 数据去重(有第一次出现了,去掉后面出现的)
        var array = [20, 10, 10, 10, 15, 19, 30, 7, 7, 7, 19, 25, 31, 31];
        // (v, i, self) => {return self.indexOf(v) === i;}
        // =>后面使用了{},所以要记得用return获取返回值
        // (v, i, self):当前比较的值(v),索引(i),原数组(self)
        // 例如索引为3的10:(10,3,array);self.indexOf(10)为1,第一次出现的索引值为1,不等于它本身现在的索引值3,所以不加入新数组,达到去重的效果
        var newArray = array.filter((v, i, self) => {
            // self.indexOf(v) === i:比较的值(v)第一次在原数组(self)出现的位置,是否等于当前的索引位置,若是等于则加入新数组,若是不等于,则不加入新数组
            return self.indexOf(v) === i;
        })
        console.log(newArray);
        var newArraya = [];
        // array.forEach((v, i, array) => {
        //     if (v > 20) {
        //         newArraya.push(v);
        //     }
        // })
        newArraya = array.filter((v, i, array) => {
            return v > 20;
        })
        console.log(newArraya);
    </script>
</body>

</html>
<!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>es6常用方法</title>
</head>

<body>
    <script>
        var arr = [20, 10, 15, 19, 30, 7, 19, 25, 31];
        // 是否存在一个30,满足一个就好
        // var bool = arr.some((v, i) => v === 30);     //true
        // 全部都是30,全部满足
        var bool = arr.every((v, i) => v === 30);           //false
        console.log(bool);
        var arr2 = [2, 4, 6];
        var newArr2 = arr2.map((v, i) => {
            return v * 10;
        })
        console.log(newArr2);       //[20,40,60]
        var arr3 = ["谁睡觉", "谁最菜"];
        var newArr3 = arr3.map((v, i) => {
            return `<li>${v}</li>`;
        })
        console.log(newArr3);
        var arr4 = [5, 6, 4, 3]
        var total = arr4.reduce((sum, num) => {
            console.log(sum);       //0,5,11,15
            console.log(num);       //5,6,4,3
            return sum + num;
        }, 0)
        console.log(total);     //18





    </script>
</body>

</html>
多层感知机 Multilayer Perceptron | MLP 本文主要简单介绍了多层感知机的基本概念,优缺点,应用场景,建模时的注意事项,评价指标,实现方法,python示例和模型的参数等。 阅读详情

相关推荐

QT+SOEM主站协议库实战指南—从编译到嵌入式应用

本文提供了一份QT与SOEM开源EtherCAT主站协议库的集成实战指南。详细介绍了在Windows和Linux平台下编译SOEM库的步骤,并讲解了如何将其无缝集成到QT项目中,构建具备实时监控与控制功能的工业上位机应用。内容涵盖从环境搭建、核心协议开发到嵌入式部署与优化的全流程,为开发高性价比、自主可控的工业控制解决方案提供完整路径。

u6v7w8x的博客 440

29.ES6:表单输入绑定(双向数据绑定)

ES6:表单输入绑定(双向数据绑定)

m0_63953077的博客 374

工业模型导入Unity实战:从ProE/SolidWorks到实时渲染的完整流程

在工业仿真、数字孪生和VR/AR应用开发中,将高精度工程模型导入实时渲染引擎是一个常见的技术挑战。其核心原理在于参数化工程软件与实时渲染引擎的数据结构差异:前者基于精确的B-rep边界表示和特征树,后者依赖轻量化的三角网格与材质贴图。这一转换的技术价值在于实现工程数据的可视化与交互化,为产品展示、虚拟培训和工厂仿真等应用场景提供基础。通过数据翻译与优化流程,特别是利用3ds Max或Blender作为中转站进行网格优化与UV展开,能够有效解决模型破面、材质丢失和性能问题。本文聚焦于ProE(Creo)和So

weixin_33050117的博客 344

前端刷题过程中遇到的重点题记录

前言 此篇包括但不仅限于对前一篇博客知识点的补充 1.手写深度比较,模拟lodash isEqual 关于深度比较的理解:如果obj1和obj2的属性、值全部相等,但是令他们 = = =的时候,还是返回false,因为他们的地址不同,深度比较就是能对两个地址不同,值相同的对象进行比较,返回true。 function isObject(obj){ return typeof obj === 'object' && obj !== null; } function isEqual(o

weixin_44715144的博客 3万+

从0开始写Vue项目-环境和项目搭建

什么是VueVue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org)2.介绍与描述动态构建用户界面的渐进式JavaScript框架作者:尤雨溪3.Vue的特点遵循MVVM模式编码简洁,体积小,运行效率高,适合移动/PC端开发它本身只关注UI,可以引入其它第三方库开发项目4.与其他JS框架的关联借鉴 Angular 的模板和数据绑定技术借鉴 React 的组件化和虚拟DOM技术5.Vue周边库vue-cli:vue脚手架axios。

不愧是暮言的博客 1483

保姆级教程:用CH34xSerCfg工具修改USB转串口芯片的VID/PID,避免驱动冲突

本文详细介绍了如何使用CH34xSerCfg工具修改USB转串口芯片的VID/PID,解决驱动冲突问题。通过实战案例和配置技巧,帮助开发者高效管理嵌入式设备,避免常见的USB设备识别问题,提升开发效率。

weixin_30924239的博客 224

表单修饰符、自定义指令、计算属性、侦听器、过滤器、生命周期

文章目录Vue 的常用特性一、表单基本操作二、自定义指令 表单操作 自定义指令 计算属性 过滤器 倾听器 声明周期 Vue 的常用特性 一、表单基本操作 通过v-model 获取单选框中的值 获取复选框中的值 复选框 checkbox 这种的组合时 data 中的 值 我们要定义成数组 否则无法实现多选 获取下拉框和文本框中的值 表单修饰符 .number 转换为数值 注意点: 当开始输入非数字的字符串时,因为Vue无法将字符串转换成数值 所以属性值将实时更新成相同的字符串。即使后面输入数字,

qq_53283188的博客 440

PCB工程师必看:别再搞错1078玻纤布的Dk了,手把手教你算等效介电常数

本文为PCB工程师提供了1078玻纤布等效介电常数(Dk)的详细计算指南,帮助解决高速设计中的信号完整性问题。通过解析玻纤布结构、混合介质理论和实战计算方法,指导工程师准确设置EDA工具参数,避免常见的Dk计算误区,提升设计精度和仿真准确性。

weixin_42546392的博客 399

Vue 修饰符

Vue提供了一些修饰符,这些修饰符在使用起来非常方便,比如阻止默认事件、冒泡等。 1. 表单修饰符 .lazy: v-modeil不用多说,输入框改变,这个数据就会改变,lazy这个修饰符会在光标离开input框才会更新数据; <input type="text" v-model.lazy="value"> .trim: 输入框过滤首尾的空格; <input type="te...

明天也要努力的博客 564

系统建模语言 (SysML)

系统建模语言

追赶时代的博客 749

Hugging Face快速入门(重点讲解模型(Transformers)和数据集部分(Datasets))

1. Hugging Face是什么,提供了哪些内容 2. Hugging Face模型的使用(Transformer类库) 3. Hugging Face数据集的使用(Datasets类库)

iioSnail的博客 8万+

日期时间选择器——el-date-picker设置默认时间

组件使用

h_jQuery的博客 1万+

在ubuntu20.04中安装MATLAB时常见问题及解决方法

   如果你刚装完ubuntu20.04,这时你想要安装MATLAB2021A,在输入命令./install进行安装时,可能会报以下错误:    terminate called after throwing an instance of ‘JailContainerException’ what(): Error: 88: No JRE version parsed from/media/jzx/MATHWORKS_R2021A/sys /java/jre/glnxa64/jre/release   

慕羽★的博客 1万+

vscode用Git上传项目到远程仓库(gitee)

git上传 在vscode的源代码管理那里操作 1.添加仓库:点击右上角的三点(…)—>选择远程—>选择添加远程存储库—>在弹出框那里输入远程的仓库地址(gitee或者是github) 这里填的是仓库名 2.将工作区的文件添加到暂存区(暂存更改):点击更改字样右侧的**+**号 3.将暂存区的文件提交到本地仓库: 点击源代码管理字样右侧的√ 输入提交的备注信息(比如完成某某功能,或者完成了某某页面),然后就回车 完成了第三步,此时的页面 说明文件都提交了,提交到了本地仓库

h_jQuery的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

文件上传——将文件转成base64传给后端

文件上传转base64

h_jQuery的博客 6266

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

vue组件封装——公用基础table组件

vue公用基础表格组件封装案例

h_jQuery的博客 3960

js处理——获取当前月第一天和最后一天

js时间处理

h_jQuery的博客 3414

KOA2的安装和使用教程

KOA2 基于node.js平台的web服务器框架 Express.Koa(这个已经淘汰不用),Koa2都是web服务器的框架 Express异步处理:回调函数; Koa异步处理:Generator+yield Koa2异步处理:async/await 由于Koa2支持async/await,所以它要求Node的版本至少(最低)是7.6。因为async/await是在Node7.6版本之后出现才支持的 在Koa2的世界中,服务器处理请求的那一块程序,被称为中间件 洋葱模型:中间件对请求的处理有一种先进后出的

h_jQuery的博客 2591

实时天气预报API——易客云API

实时天气预报API——易客云API

h_jQuery的博客 2405

微信小程序——自定义组件、插槽

微信小程序的自定义组件 组件的使用: **1.**在根目录创建components文件夹(与pages同级),在此文件夹下再创建一个文件夹(如test),再右键test文件夹选择新建Component,文件名建议与test同名(好管理),完成后会自动在test文件夹下生成同名的.js/.wxml/.json/.wxss四个文件 **2.**在组件的.json文件里设置usingComponents { "component": true, "usingComponents": { "组件名"

h_jQuery的博客 2295

echarts图表——柱状图、折线图、散点图、饼图、地图

echart图表 公共样式: ul { width: 400px; height: 40px; margin: 20px auto; /* line-height: 40px; */ } ul li { float: left; list-style: none; } ul li a { display: block; font-size: 18px; color: orange; text-decoration: none

h_jQuery的博客 2226

vuex案例——任务的增删改查

1.创建个vuex项目 1.1在终端输入vue ui 1.2.在浏览器打开ui页面,点击Vue项目管理处 创建步骤和要求跟创建vue项目大致一样 点击1处,找文件位置 确定要将项目建在哪个文件,然后就进行第三步 这里就只填写项目名就可以了,其他就默认,填完项目名就直接下一步了 选择手动 选择完就下一步 ** 2.项目实施 ** 2.1删掉不必要的代码(app.vue里面的一些代码,删掉view文件夹,删掉components文件夹下的vue文件,还有router/index.js里面的一些代码

h_jQuery的博客 2122

Vue-webpack打包教程

webpack 1.创建项目并在终端初始化 npm init -y 在项目目录下回生成一个package.json文件 2.在项目目录下创建src文件夹,在src目录下创建index.html文件和index.js文件 index.html内容为: <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li

h_jQuery的博客 2002

vue项目创建——vue2/vue3

创建项目,vue2,vue3,vite

h_jQuery的博客 1880

vue-qr生成二维码并下载

vue-qr生成二维码并下载

h_jQuery的博客 1845

接口跨域问题——CORS、JSONP

跨域 1.接口的跨域问题 get和post接口,不支持跨域请求 解决接口跨域问题的方案主要有两种: 1.CORS(主流的解决方案,推荐使用) 2.JSONP(有缺陷的解决方案:只支持get请求) CORS :跨域资源共享 cors 是 Express 的一个第三方中间件。通过安装和配置 cors 中间件,可以很方便地解决跨域问题 **CORS (Cross-Origin Resource Sharing,跨域资源共享)**由一系列 HTTP 响应头组成,这些 HTTP 响应头决定浏览器是否阻止前端 JS 代

h_jQuery的博客 1703

uniapp创建项目——vue3+vite

创建项目命令 npx degit dcloudio/uni-preset-vue#vite my-vue3-project 在创建新的页面时,会有模板选择。 创建常用模板: 在一下的目录下创建一个文件,将常用的模板放进去 常用的vue3初始化模板 <script setup> import { ref, toRefs, onMounted, reactive, defineProps } from 'vue' import { useRouter, useRoute } from 'vu

h_jQuery的博客 1684
上一篇: ES6——数组数据去重
下一篇: Vue学习——组件、组件之间数据的传送
初级码农小九
博客等级 码龄6年 40粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值