带着实例继续学习(1):组件式登录页面-点击事件、组件通讯

STC单片机与淘晶驰串口屏通讯例程之04【密码登录与修改】 接下来,我们切换到password_page页面,这个页面大部分控件的内容跟login_page页面一样,笔者这里只介绍不一样的地方,想通的地方就不再赘述。很多项目中,为了保护某些参数不被随意修改,往往需要增加密码来保护,这也是触摸屏常用的一个功能,那么淘晶驰的串口屏,要如何实现密码登录功能呢?2、当输入的密码不是我们设定的“普通密码”或不可修改的“超级密码”时,则在t0文本控件中显示“密码错误,请重新输入密码”提醒用户。 阅读详情

本节课要点

我们利用之前学到的知识点做一个用户登录框,其中
1.为了界面不至于太恶心,我们引入bootstrap样式
2.我们故意把登录界面要素比如用户名、密码和提交按钮分成3个组件(仅仅是为了学习,增加难度)

一、引入bootstrap
这里写图片描述
新建目录css和fonts,放入对应的文件。

安装相应的webpack插件

为了正确的加载bootstrap中的样式和字体,我们需要安装

 npm install file-loader --save-dev

webpack的配置文件中要加入

{test:/\.(eot|woff|woff2|svg|ttf)([\?]?.*)$/,loader:"file"}

这里写图片描述

二、折腾组件
这里写图片描述
user-login.vue内容如下:

<template>
    <div id="user-login" class="col-md-8 col-md-offset-2">
        <h2 class="text-center">用户登录</h2>
        <form class="form-horizontal" role="form">
            <user-name placeholder="请输入你的用户名"></user-name>
        </form>
    </div>
</template>

<style>
    @import "./../css/bootstrap.min.css";
    #user-login{
        margin-top: 50px;
    }
</style>

<script>
   import username from "./user/use-name.vue";
    export default{
        components:{
           "user-name":username
        }
    }
</script>

user-name.vue内容如下:

<template>
    <div class="row">
        <div class="form-group">
            <label class="col-sm-2">用户名</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" :placeholder="username">
            </div>
        </div>
        <div class="form-group">
            <div class="col-sm-10 col-sm-offset-2">
                <button type="button" class="btn btn-default">提交</button>
            </div>
        </div>
    </div>
</template>

<script>
    export default{
        props:["placeholder"]
    }
</script>

然后要修改入门文件jssrc/index.js

import Vue from "vue";


import userlogin from "./../components/user-login.vue";

new Vue({
    el:".container",
    components:{"user-login": userlogin}
});

执行webpack打包,浏览器查看编译之后的html,效果如下:
这里写图片描述

三、事件是怎么处理的

比如我们点击『提交』按钮,应该怎么处理?

<script>
    export default{
        props:["placeholder"],
        methods:{
            test(){
                alert("test");
            }
        }
    }
</script>
 <button type="button" v-on:click="test" class="btn btn-default">提交</button>

这里写图片描述

四、怎么获取文本框的值

v-model 双向数据绑定
官方解释如下:可以用v-model指令在表单控件元素上创建双向数据绑定。根据控件类型它自动选取正确的方法更新元素。尽管有点儿神奇,v-model不过是语法糖,在用户输入事件中更新数据,以及特别处理一些极端例子。

<input type="text" v-model="username" class="form-control" :placeholder="username">
<script>
    export default{
        props:["placeholder"],
        data:function () {
            return {username:"张三"}
        },
        methods:{
            test(){
                alert(this.username);
            }
        }
    }

五、组件之间的通讯

1.先把提交按钮拆分出来
这里写图片描述
user-submit.vue内容如下:

<template>
    <div class="form-group">
        <div class="col-sm-10 col-sm-offset-2">
            <button type="button" v-on:click="test" class="btn btn-default">提交</button>
        </div>
    </div>
</template>

<script>
    export default{
        methods:{
            test(){
                alert(this.username);
            }
        }
    }
</script>

user-username.vue内容如下:

<template>
    <div class="form-group">
        <label class="col-sm-2">用户名</label>
        <div class="col-sm-10">
            <input type="text" v-model="username" class="form-control" :placeholder="username">
        </div>
    </div>
</template>

<script>
    export default{
        props:["placeholder"],
        data:function () {
            return {username:"张三"}
        }
    }
</script>

user-login.vue内容如下:

<template>
    <div id="user-login" class="col-md-8 col-md-offset-2">
        <h2 class="text-center">用户登录</h2>
        <form class="form-horizontal" role="form">
            <user-name placeholder="请输入你的用户名"></user-name>
            <user-submit></user-submit>
        </form>
    </div>
</template>

<style>
    @import "./../css/bootstrap.min.css";
    #user-login{
        margin-top: 50px;
    }
</style>

<script>
   import username from "./user/use-name.vue";
   import usersubmit from "./user/user-submit.vue";
    export default{
        components:{
           "user-name":username,
            "user-submit":usersubmit
        }
    }
</script>

至此,界面上还是一样的,只不过点击『提交』按钮,就拿不到用户名文本框的值了
这里写图片描述

怎么在user-submit组件里,去访问user-name组件呢?

组件访问方式

今天学习最简单的2个访问方式
(1) this.parent访问父组件(2)this.children 访问子组件(是一个数组)
访问某个子组件,可以用数组[索引]是方式。

用索引的方式太麻烦

vue.js 2.0提供了一个ref 的属性:
可以为子组件指定一个索引id,比如:

则访问时可以:
this.parent.refs.uname

<user-name ref="uname" placeholder="请输入你的用户名"></user-name>

user-submit.vue里:

<script>
    export default{
        methods:{
            test(){
                alert(this.$parent.$refs.uname.$data.username);
            }
        }
    }
</script>

这里写图片描述
ok,这就实现了相邻组件之间的通信。

从OAuth到DID:Web4.0身份验证协议的技术演进图谱 在数字身份体系从Web2.0向Web4.0跨越的进程中,身份验证协议正经历着从中心化授权到自主主权的范式转移。本文通过对比OAuth 2.0、OpenID Connect等传统方案与W3C DID、ION等去中心化协议的技术架构,揭示身份验证技术在性能、安全、隐私三大维度的代际差异。基于对GitHub、欧盟数字身份钱包等典型系统的实测数据分析,量化评估中心化授权服务器的单点故障风险与DID链上验证的吞吐量瓶颈。结合零知识证明、分布式密钥管理等前沿技术,为开发者提供面向Web4.0的渐进式身份架构迁移策略。 阅读详情

相关推荐

S32K3 eMIOS输入捕获(ICU)全解析:从信号测量到代码实现

本文深入解析了S32K3 eMIOS输入捕获(ICU)技术,从信号测量到代码实现的完整流程。详细对比了六种核心捕获模式的性能差异,提供了动态模式切换、Counter Bus配置、中断服务程序优化等实战技巧,并分享了汽车电子中的典型应用案例,如发动机转速测量和CAN唤醒脉冲检测。

weixin_33137081的博客 347

通用vue组件化登录页面

通用vue组件化登录页面

qq_55928824的博客 8178

M2DGR数据集在主流SLAM框架中的实战配置指南:从ORB-SLAM到FAST-LIO的完整流程

本文提供了M2DGR多传感器数据集在主流SLAM框架中的实战配置指南。详细介绍了从ORB-SLAM、VINS-Mono等视觉/视觉惯性框架,到A-LOAM、FAST-LIO等激光/激光惯性框架的完整配置流程、参数调整要点及常见问题解决方案。通过实际测试对比,分析了各算法在M2DGR数据集上的表现,为机器人定位与建图研究提供了宝贵的实战经验。

k9l0m1的博客 481

快速上手vue elementUI好看的登录界面

然后希望这篇文章能够帮助到你,快速掌握vue。

IT13333的博客 1万+

野火STM32F407(骄阳)+无刷直流驱动板+永磁同步电机控制学习记录(四)(基于HAL库)

以上内容都是参考别人资料自学的,很多地方都是凭感觉,因为理论部分不太会算,只要电机能转就行,其他性能指标都没考虑,因为不会,所以这纯属是学习记录帖。带宽在500时,电流波动小,但是响应很慢,就是堵转后不太容易恢复转动。速度环带宽设定小了,响应不够快,带宽设定大了波动比较大,电机感觉起来也震一点,而且,当带宽设到200的时候,启动直接就锁死了,应该是PI增益设定太大了。电流环带宽的试验:去掉速度环,让Iq_Set=2,Ud=0,此时电机是电流环闭环控制,用手堵转电机然后松开,看电流的波动以及响应情况。

XUEXIDEXIAOhai的博客 4553

Steam游戏服务器攻防全景解读——如何构建游戏级抗DDoS防御体系?

当检测到TCP/UDP混合攻击时,应触发预设的熔断策略:优先保障游戏大厅服务的UDP 27015端口,临时限制匹配系统的TCP连接数。针对Steam游戏服务器特有的UDP 4380端口,需配置协议合规性检查规则:限制数据包长度不超过128字节,强制校验请求来源IP的真实性。Steam游戏服务器的防护需要平衡安全性与玩家体验,通过协议深度解析、智能流量调度和服务端加固的三维防御体系,可构建游戏行业专属的抗DDoS护城河。答:采用弹性防护方案,基础防护带宽保持50Gbps,遭遇攻击时自动扩展至T级清洗能力。

2501_91486804的博客 1452

登录组件

<template> <div class="about"> <van-field v-model="user" placeholder='请输入用户名' /> <van-field v-model="pwd" placeholder='请输入密码' /> <van-button type="primary" v-show="!isShow" @click="loginIn('/login')">登录</van-

海阔天空 282

计算机网络期末复习提纲(全知识点总结)

计算机网络期末复习提纲全知识点总结第一章 概述1.基本概念- 链路,结点,协议和服务,实体和对等实体,各层PDU- C/S模式,B/S模式,P2P模式- LAN,WAN,MAN,PAN的划分- 网络性能参数:速率,带宽,吞吐量,时延,往返时间,信道利用率2.互联网的组成(边缘部分与核心部分的作用)3.电路交换与分组交换,数据报交换和虚电路交换的特点4.TCP/IP体系结构,数据的封装与解封装第二章 物理层1.信号编码:不归零编码,曼切斯特编码2.影响信号失真程度的因素3.传输介质:双绞线,同轴电缆,光纤(单

mcyuuji的博客 8万+

Vue+Element Ui 登陆页面 笔记

/ 如果 layout 目录下有多个文件,通常情况下会存在一个默认导出的文件,如 index.vue,它通常被用作布局组件的容器。同时也可以定义其他子组件,这些组件可以是单独的 .vue 文件,也可以是 .js 或 .ts 文件,然后再由布局组件去引用它们。// 但是,在实际开发中,并没有什么固定的规则。// component:对应的组件,可以是通过 import 引入的组件,也可以是一个懒加载的组件。// 找到文件中的默认导出,该导出可以是任意类型的值(对象、函数、字符串等),但必须是唯一的。

m0_71827731的博客 1854

从零开始:用这些公开数据集搞定电力AI项目(含鸟巢、绝缘子、负荷预测等33个实战资源)

本文系统梳理了电力AI领域33个精选公开数据集,涵盖目标检测、负荷预测等关键场景,如鸟巢检测、绝缘子缺陷识别等。通过实战案例解析数据预处理、模型选型及性能优化策略,帮助工程师快速构建端到端解决方案,解决电力AI项目中的数据获取与处理难题。

weixin_42522552的博客 216

DeepLabv3+改进专栏

🔥【DeepLabv3+改进专栏!探索语义分割新高度】🌟 你是否在为图像分割的精度与效率发愁?📢 本专栏重磅推出:✅ 独家改进策略:融合注意力机制、轻量化设计与多尺度优化✅ 即插即用模块:ASPP+升级、解码器。

AIcurator的博客 2575

2 登录注册组件

1. 在views目录下新建Login.vue 2. 在views/Login.vue中添加如下代码 创建登录注册界面 <script setup> import { User, Lock } from '@element-plus/icons-vue' import { ref } from 'vue' import { ElMessage } from 'element-plus' //用于注册的数据模型 const registerData = ref({ username: '

zi__you的博客 1401

基于STM32设计的掌上游戏机(运行NES游戏模拟器)详细开发过程

利用STM32单片机移植NES游戏模拟器,完成NES游戏开发,可以玩标准的NES游戏,已测试超级玛丽、魂斗罗之类的都可以正常运行。

4万+

带着实例继续学习(1):组件式登录页面-点击事件、组件通讯<四>

安装文件插件npm install file-loader --save-dev更新webpack.config.jsvar HtmlWebpackPlugin = require('html-webpack-plugin'); var webpack = require('webpack'); module.exports = { entry:{ "index":[__dirname+'/...

design321的专栏 312

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

千亿级IM独立开发指南丨全球即时通讯全套代码4小时速成(二):UI设计与搭建

从零构建即时通信APP的亿点点细节——UI设计与搭建

weixin_39367158的博客 2865

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Vue学习之八(父子组件通讯,Vuex与购物车修改删,导航守卫解决权限路由问题)

父子组件的通讯 1.父组件通过prop向下传递, 接收方,子组件中声明props props:['goodsId',goodsCount] 传值方,父组件 导入子组件import inputnumber from '..' template中使用 &lt;inputnumber :goodsId="" :goodsCount="" /&gt;&gt; 在components中注册 2.子...

David Wu 614

192.168.8.1手机登陆_192.168.8.1手机登录入口官网路由器设置

192.168.8.1是高科路由器的设置IP地址,本文介绍192.168.8.1路路由器登录入口及设置方法,以及192.168.8.1登录不进页面的解决方法,一起来看看192.168.8.1相关的介绍内容吧。路由器大全192.168.8.1登录入口192.168.8.1路由器设置的方法1.路由器连入网络。将网线接入路由器的WAN口,用网线将电脑与路由器的任意一个Lan口连接。启动电脑,当Lan口...

weixin_39649965的博客 1万+

WechatRealFriends错误恢复功能:检测中断后的终极继续操作方法指南

微信好友检测工具WechatRealFriends是一款基于微信iPad协议开发的实用工具,能够快速检测单向好友关系,发现哪些朋友偷偷删除了你或者拉黑了你。在实际使用过程中,网络波动或程序异常可能导致检测过程中断,但不用担心,我们提供了完整的错误恢复方案。🎯 ## 为什么需要错误恢复功能? 微信好友检测是一个耗时的过程,特别是当你的好友数量较多时。如果检测到一半突然中断,重新开始不仅浪费时间

gitblog_00182的博客 965

selenium 数据驱动框架自动化从0到1--2

selenium 数据驱动框架自动化从0到1–2 结合上一篇,我们继续根据正常流程,封装模块 上一篇代码如下: #encoding = utf-8 from util.getObjectMap import * from util.openBrowser import * #创建chrome浏览器实例 driver = OpenBrowser() #由于登录页面元素是嵌套页面,所以要切换frame,切换到frame 控件 frame = getElement(driver,'xpath',"//if

zhangguangyi520的博客 298

delphi 登录界面 主窗体 切换_winform项目——仿QQ即时通讯程序05:搭建主界面

前两篇文章,我们完成了登录界面的搭建。因为描述的过程特别详细,所以占用了两篇文章。其余的界面搭建过程将不再详细到每一步如何点击,只描述整体如何搭建即可,有winform基础就能够看懂。自定义用户控件因为CIM(即时通讯系统)的每个页面边框样式都需要自定义,页面上的缩小和关闭窗口按钮都需要我们自己实现,因此,为了方便,我们将这两者放在一块,做一个自定义整合控件,使用的时候直接拖到边框属性设置为Non...

weixin_39624816的博客 625

7个最佳实践的潜在客户捕获登录页面案例

线索捕获页面是一个着陆页,它向潜在客户提供某种回报以换取他们的电子邮箱地址或其他信息。任何带表单的页面,包括电子书下载页面、演示请求页面或新闻通讯注册页面,都可以视为线索捕获页面。与您网站上的其他页面不同,线索捕获页面只有一个目标:用一个线索磁铁(或奖励)来换取访客的信息。把这个交换处理好,您就能将更多访客转化为线索,或者将更多的粉丝和观察者转化为真正的潜在客户和客户。通过光年AI系统,企业可以无缝接入多个流量平台,进一步提升线索捕获效果。在你开始构建任何东西之前,你需要知道你在向谁营销。

国内外主流AI大模型的整合,用户可以在不同大模型上实现无缝操作,提升整体效率 1786

ajax php注册登录页面,用AJAX实现页面登陆以及注册用户名验证的简单实例

下面我就为大家带来一篇用AJAX实现页面登陆以及注册用户名验证的简单实例。现在就分享给大家,也给大家做个参考。AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX 是一种用于创建快速动态网页的技术。其核心是 JavaScript 对象 XMLHttpRequest。该对象在 Intern...

weixin_35617554的博客 693

即时通讯--UI自动化测试

​​网页聊天室(测试报告)

2301_81743879的博客 83

三次输错密码后,系统是怎么做到不让我继续尝试的?

来源|juejin.cn/post/7232128694503145533???? 欢迎加入小哈的星球,你将获得:专属的项目实战/ Java 学习路线 / 一对一提问 / 学习打卡/ 赠书福利目前, 正在星球内部带小伙伴做第一个项目:全栈前后端分离博客,手摸手,后端 + 前端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,直到项目上线。目前已更新了156小节,累计24w+字,讲解图:...

犬小哈 162

微信好友关系检测终极指南:如何快速识别单向好友并清理通讯录

微信好友关系一键检测工具WechatRealFriends是一款基于微信iPad协议的实用开源工具,能够帮助用户快速识别哪些好友已经删除或拉黑了你,实现单向好友的自动标记和管理。本文提供完整的使用教程和问题解决方案,让你轻松掌握这个实用的微信好友管理工具。 ## 🔍 为什么需要微信好友关系检测工具? 在微信社交网络中,我们经常会遇到单向好友的问题——有些人已经删除了你,但你还保留着他们的联系

gitblog_01080的博客 597

selenium 数据驱动框架自动化从0到1--3

selenium 数据驱动框架自动化从0到1–3 上一篇我们没有把链路上的页面封装完,这篇继续封装,上一篇封装后的代码如下: #encoding = utf-8 from appModules.loginAction import * from util.openBrowser import * #创建chrome浏览器实例 driver = OpenBrowser() lg = LoginAction() lg.login(driver,'abc_123456qwe','abc_123456') #

zhangguangyi520的博客 350

服务器无线不能登录界面,Web认证无法跳转到登录页面

步骤1、排查ePortal服务是否正常运行1. 点击ePortal服务器桌面的程序图标 ,弹出ePortal服务管理器的控制台界面,v1.41版本服务管理器界面如下:3.png (123.79 KB, 下载次数: 126)2015-4-28 10:30 上传v1.40及之前版本的服务管理器界面如下:4.png (120.76 KB, 下载次数: 121)2015-4-28 10:30 上传2...

weixin_39607620的博客 3143
上一篇: 多列索引实验
下一篇: 带着实例继续学习(2):父子组件通信之自定义事件
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值