前端框架开始学习Vue(一)

MVVM开发思想图(图片可能会被缩小,请右键另存查看,图片来源于网络)
 

定义基本Vue代码结构


1 v-text,v-cloak,v-html命令
默认 v-text没有闪烁问题,但是会覆盖元素中原本的内容,插值表达式只会替换自己的占位符,
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><script src="vue.js"></script><style type="text/css">[v-cloak]{display: none;}</style><body><div id="app"><p v-cloak="">{{msg}}</p></div><script type="text/javascript">var vm = new Vue({el:'#app',data:{msg:"123"}})</script></body>
</html>
View Code--使用v-cloak解决插值表达式闪烁的问题

 以上两种 方法会默认转义成文本输出

如果需要输出成网页元素就需要 v-html

<div v-html="msg2"></div>


2 v-bind 使用【Vue中提供了 v-on:事件绑定机制】 缩写是【:】

v-bind : 是vue中,提供的用于绑定属性的指令
<
input type="button" name="" id="" value="按钮" v-bind:title="msg3" />
<input type="button" name="" id="" value="按钮" v-bind:title="msg3+'123'" />\
注意:
  v-bind:指令可以被简写为 : 要绑定的属性
  v-bind中,可以写合法的js表达式
<input type="button" name="" id="" value="按钮" :title="msg3" /> #这样也是可以的


 

3 v-on指令【Vue中提供了 v-on:事件绑定机制】 缩写是【@】

<body><div id="app"><input type="button" value="按钮2" v-on:click="show" /><input type="button" value="按钮2" v-on:mouseover="show" />            </div><script type="text/javascript">var vm = new Vue({el:'#app',data:{msg3:'大家都是好学生'},methods:{ //这个methods属性中定义了当前Vue实例所有可用的方法
                    show:function(){alert('hello')}}})</script></body>
View Code--使用v-on:绑定事件,此绑定了点击事件和鼠标覆盖事件

事件修饰符:

  .stop 阻止冒泡

<body><div id="app"><div class="inner" @click="div1Handler"><input type="button" value="惟他" @click.stop="btnHandler"/></div></div><script type="text/javascript">var vm = new Vue({el:'#app',data:{},methods:{ div1Handler(){console.log('inner div 事件')},btnHandler(){console.log('按钮事件')}}})</script></body>
View Code--阻止冒泡

  .prevent 阻止默认事件

<body><div id="app"><a href="http://www.baidu.com" @click.prevent="linkClick">有问题,去百度</a></div><script type="text/javascript">var vm = new Vue({el:'#app',data:{},methods:{ linkClick(){console.log('触发连接点击事件')}}})</script></body>
View Code--阻止事件

  .capture 添加事件侦听器时使用事件捕获模式 

<body><div id="app"><div class="inner" @click.capture="divHandler"><input type="button" name="" id="" value="按钮" @click="btnHandler" /></div></div><script type="text/javascript">var vm = new Vue({el:'#app',data:{},methods:{ divHandler(){console.log('class触发')},btnHandler(){console.log('按钮触发')}}})</script></body>
View Code--从外到里,进行捕获事件

  .self 只当事件在该元素本身(比如不是子元素)触发时触发回调

<body><div id="app"><div class="inner" @click.self="divHandler"><input type="button" name="" id="" value="按钮" @click="btnHandler" /></div></div><script type="text/javascript">var vm = new Vue({el:'#app',data:{},methods:{ divHandler(){console.log('class触发')},btnHandler(){console.log('按钮触发')}}})</script></body>
View Code--实现只有点击当前元素时候才会触发事件处理函数

  .once 事件只触发一次

<body><div id="app"><div class="inner" @click.self.once="divHandler"><input type="button" name="" id="" value="按钮" @click.once="btnHandler" /></div></div><script type="text/javascript">var vm = new Vue({el:'#app',data:{},methods:{ divHandler(){console.log('class触发')},btnHandler(){console.log('按钮触发')}}})</script></body>
View Code-- .once只触发一次事件处理函数

 

 

 .self 只会阻止自己身上冒泡行为的触发,并不会真正阻止冒泡的行为


 


4 使用Vue完成一个跑马灯效果

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><script type="text/javascript" src="vue.js"></script><body><div id="app"><input type="button" name="" id="" value="浪起来" v-on:click="lang"/><input type="button" name="" id="" value="低调" @click="stop"/><h4>{{msg}}</h4></div><script type="text/javascript">// 注意:在vm 实例中,如果想要获取data上的数据 或者想要调用//  methods中的方法     ,必须通过this.数据属性名 或this.方法名 来进行访问// 这里的this表示 我们new 出来 的 vm 实例对象var vm = new Vue({el:'#app',data:{msg:'猥琐发育,别浪~~!',intervalId:null},methods:{lang(){if (this.intervalId!=null)return;// 箭头函数是解决this指向的问题this.intervalId=setInterval(()=>{//console.log(_this.msg)// 获取到头的第一个字符var start = this.msg.substring(0,1)// 获取到后面的所有字符var end = this.msg.substring(1)// 重新拼接得到新的字符串,并赋值给this.msgthis.msg=end +start},400)},stop(){ //停止定时器
                        clearInterval(this.intervalId)this.intervalId=null;}}})// 分析:// 1 给浪起来按钮绑定点击事件 用 v-on // 2 在按钮事件处理函数中,写相关的业务逻辑代码:拿到//    msg 然后调用字符串的 substring来进行字符串截取操作// 3 为了实现点击下按钮,自动截取的功能,需要实现定时功能</script></body>
</html>
View Code

 



 

5 v-model双向绑定

v-bind 只能实现数据的单向绑定,从M 自动绑定到 V,无法实现双向绑定
<
input type="text" name="" id="" v-bind:value="msg3" />
使用 v-model指令,可以实现表单元素和Model中数据双向数据绑定
注意:v-model 只能运用在表单元素中
input(radio,text,address,email...) select checkbox
<
input type="text" name="" id="" v-model="msg3" />
    <body><div id="app"><input type="text" v-model="n1" /><select name="" id="" v-model="opt"><option value="+">+</option><option value="-">-</option><option value="*">*</option>                <option value="/">/</option>                </select><input type="text" v-model="n2" /><input type="button" value="=" @click="calc"/><input type="text" name="" id="" v-model="result" /></div><script type="text/javascript">var vm = new Vue({el:'#app',data:{n1:0,n2:0,result:0,opt:'+'},methods:{ calc(){ //计算器算数方法
//                        switch(this.opt){
//                            case "+":
//                            this.result = parseInt(this.n1)+parseInt(this.n2)
//                            break;
//                            case "-":
//                            this.result = parseInt(this.n1)-parseInt(this.n2)
//                            break;
//                            case "*":
//                            this.result = parseInt(this.n1)*parseInt(this.n2)
//                            break;
//                            case "/":
//                            this.result = parseInt(this.n1)+parseInt(this.n2)
//                            break;
//                        }// 投机取巧法,正式开发中,尽量少用var codeStr = 'parseInt(this.n1)'+this.opt+'parseInt(this.n2)'this.result=eval(codeStr)},}})</script></body>
View Code ---用v-model双向绑定实现计算器的基本功能

 

转载于:https://www.cnblogs.com/Skyda/p/10216747.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P1616 疯狂的采药(洛谷,动态规划递推,完全背包)

先上题目链接:P1616 疯狂的采药 然后放AC代码: #include<bits/stdc.h> #define ll long long using namespace std; ll f[100010]; ll timee[10010]; ll w[10010]; int main() {ll t,m;cin>>t>>m;//t总时间,m总草药//time时间,w价值for(ll i1;i<m;i){scan…

MySQL通过source命令执行sql文件

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 IT人员经常会和MySQL打交道&#xff0c;备份和恢复应该是最常用的操作了&#xff0c;那么通过直接执行sql文件无疑是最快捷的方式&#x…

MySQL索引底层实现原理

索引的本质 MySQL官方对索引的定义为&#xff1a;索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构。提取句子主干&#xff0c;就可以得到索引的本质&#xff1a;索引是数据结构。 我们知道&#xff0c;数据库查询是数据库的最主要功能之一。我们都希望查询…

解决 A component required a bean of ‘XXX.RoleService‘ that could not be found.

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 springboot工程启动报错&#xff0c;无法启动成功。 dubbo订阅服务失败&#xff0c;提示如下&#xff1a; 出错原因&#xff1a;唉&…

配合OAuth2进行单设备登录拦截

2019独角兽企业重金招聘Python工程师标准>>> 要进行单设备登录&#xff0c;在其他地点登录后&#xff0c;本地的其他操作会被拦截返回登录界面。 原理就在于要在登录时在redis中存储Session,进行操作时要进行Session的比对。 具体实现&#xff0c;假设我们的OAuth 2…

C++知识点(六)数组、指针与字符串导学

1.数组 地址连续存放初始化&#xff1a;列出全部初始值后&#xff0c;第1维下标个数可以省略不做初始化&#xff0c;局部变量中为垃圾数据&#xff0c;static变量为0只对一部分进行初始化&#xff0c;其余数值初始化为02.动态内存分配&#xff1a; new delete 3.动态创建数组 n…

钱线观察:货币基金T+0驾到 活期存款将死?

导语&#xff1a;即使没有任何投资风险&#xff0c;通胀也在侵蚀居民的财富&#xff0c;现金是不安全的。最近出现的一项业务&#xff0c;货币基金"T0"赎回&#xff0c;意味着货币基金可以像活期存款一样即时取现&#xff0c;而其收益率普遍高于活期存款。因此有人认…

CentOS 7.0 上安装和配置 VNC 服务器

作为一个系统管理员&#xff0c;大多数时间是通过网络管理服务器的。在管理服务器的过程中很少会用到图形界面&#xff0c;多数情况下我们只是用 SSH 来完成我们的管理任务。在这篇文章里&#xff0c;我们将配置 VNC 来提供一个连接我们 CentOS 7 服务器的方法。VNC 允许我们开…

Mongo DB 简单搭建和部署

1.先下载源代码包 官网下载地址&#xff1a;http://www.mongodb.org/downloads 2.解包tar xf mongodb-linux-x86_64-rhel62-3.2.7.tgz 3.把包移动到 /usr/local/mongodb mv mongodb-linux-x86_64-rhel62-3.2.7/ /usr/local/mongodb 指定同一时间最多可开启的文件数&#xff08…

NSOperation的进阶使用和简单探讨

本文将会从多个方面探讨NSOperation类和NSOperationQueue类的相关内容 一、简介 NSOperation类是iOS2.0推出的&#xff0c;通过NSThread实现的,但是效率一般。 从OS X10.6和iOS4推出GCD时&#xff0c;又重写了NSOperation和NSOperationQueue&#xff0c;NSOperation和NSOperati…

廖雪峰Java1-2程序基础-7布尔运算符

布尔运算符 关系运算符&#xff1a;>&#xff0c; >&#xff0c; <&#xff0c; <&#xff0c; &#xff0c;!与运算 &&或运算 |非运算 &#xff01;int n 5;boolean t n > 0;//trueboolean f n < 0;//falseboolean isFive n 5;//trueboolean i…

第二十一届国际C语言混乱代码大赛结果公布

摘要&#xff1a;国际C语言混乱代码大赛&#xff08;IOCCC, The International Obfuscated C Code Contest&#xff09;是一项著名的国际编程赛事&#xff0c;从1984年开始到2006年&#xff0c;每年举办一次。2006年后中止了多年&#xff0c;2011年又开始恢复。比赛的目的是写出…

maven02-----Maven项目构建的初次使用

一. 创建Maven项目 1.1 建立一个Hello项目 当然也可以通过java project的方式创建符合Maven约定的目录结果的项目&#xff0c;并手动建立pom.xml文件&#xff0c;但是太繁琐了。因此&#xff0c;这里直接建立maven项目。note: eclipse有内建的maven项目创建功能&#xff0c;倘若…

【重点突破】—— React实现富文本编辑器

前言&#xff1a;富文本编辑器Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器&#xff0c;所见即所得的文本编辑器。 一、安装插件 react-draft-wysiwyg&#xff1a; 文本编辑器插件 draftjs-to-html&#xff1a;文本转换为html的插件 yarn add react-draft-wysiwyg draftj…

Ubuntu 12.10 正式发布

Canonical今天正式发布了Ubuntu 12.10版本&#xff0c;代号为“Quantal Quetzal”&#xff0c;意为量子绿咬鹃&#xff0c;绿咬鹃是一种生活在美洲的颜色极为鲜艳的鸟。Ubuntu的版本代号一直都这么奇怪。 在该版本中&#xff0c;改进了Unity桌面环境&#xff0c;弱化了本地应用…

JVM技术周报第2期

JVM技术周报第2期 JVM技术周报分享JVM技术交流群的讨论内容&#xff0c;由群内成员整理归纳而成。如果你有兴趣入群讨论&#xff0c;请关注「Java技术精选」公众号&#xff0c;通过右下角菜单「入群交流」加我好友&#xff0c;获取入群详情。 1、如何阅读源码&#xff1f; 在我…

最长重复子串和最长不重复子串求解

最长重复子串和最长不重复子串求解 本文内容框架&#xff1a; 1 最长重复子串 基本方法、KMP算法求解、后缀数组求解 2 最长不重复子串 基本方法、动态规划、动态规划Hash 3 小结 1最长重复子串 1.1问题描述 首先这是一个单字符串问题。子字符串R 在字符串L 中至少出现两…

前后端分离——token超时刷新策略

前言 记录一下前后端分离下————token超时刷新策略&#xff01; 需求场景 昨天发了一篇记录 前后端分离应用——用户信息传递 中介绍了token认证机制&#xff0c;跟几位群友讨论了下&#xff0c;有些同学有这么一个疑惑&#xff1a;token失效了&#xff0c;应该怎么做&…

阿里云@广东:让我们一起上云!

锅炉故障预测 预警准确率95%以上 利用算法模型进行制程能力的 综合分析与评估优化 提升定标效率 时间降低30% 构建垃圾焚烧发电工艺的优化算法模型 综合考虑环保和设备负荷因素 推荐最优工艺参数组合 优化人工操作&#xff0c;提高燃烧效率 中海油能源发展公司 石油钻探预测优化…

weblogic jprofile配置

前提&#xff1a; 1.安装好weblogic 2.安装好jprofile 非等待模式&#xff1a; export JAVA_OPTIONS"${JAVA_OPTIONS} -Dweblogic.threadpool.MinPoolSize100 -Dweblogic.threadpool.MaxPoolSize1000 -Djava.awt.headlesstrue -agentpath:/opt/jprofiler9/bin/linux-x64/l…