前端框架开始学习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,一经查实,立即删除!

相关文章

Android App图片轮播效果的组件化

简介 一个通用的图片轮播效果的通用组件&#xff0c;方便开发者快速集成。 初学者&#xff0c;其实应该实现一个自定义控件的&#xff0c;改天有空&#xff0c;在学习下吧&#xff0c;学习能力一般&#xff0c;以前也没写过java&#xff0c;这个组件都写了好久&#xff0c;惭愧…

天下IT:程序员能挣哪些外快?

各位朋友&#xff0c;大家好&#xff01;欢迎收看《天下IT》。 今天我们给您讲讲程序员&#xff0c;坦率的说世界上的程序员基本跟我手里的帽子一样遍地都是&#xff0c;各种各样的程序员&#xff0c;因为程序员已经成为社会的主流打工群体。但是程序员实际在公司里往往是最不受…

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…

Android系统中通过shell命令实现wifi的连接控制

简介 工作中遇到一个“变态”的需求&#xff0c;在android系统中不通过java层控制wifi的连接&#xff08;主要是修改ap的essid和password&#xff09;&#xff0c;而是需要通过native层实现对wifi的控制。 How 接到这个需求时&#xff0c;第一个想法是如何找到Android nativ…

程序员赚大钱

本文共分三部分&#xff0c;现在打开的是《第一部分》&#xff0c;欢迎继续阅读《第二部分》和《第三部分》1 引子 都说海阔凭鱼跃&#xff0c;又有多少鱼能跃出大海&#xff1f;都说天高任鸟飞&#xff0c;但真正能一飞冲天的&#xff0c;也不过是寥寥数鹰而已&#xff1b;在…

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;唉&…

开源个小工具simple-repo

背景 了解android系统的都应该熟悉repo这个工具&#xff0c;google为了方便管理数百个git仓库&#xff0c;开发了repo这个批量管理工具。不过google repo project配置比较麻烦&#xff0c;而通过gitbucket搭建git server则比较傻瓜&#xff0c;所以此处开发了simple-repo这么一…

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

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

朱大鸣:中国金融危机到底有多严重

我们到底该不该救助金融机构&#xff0c;中国钞票到底有没有超发&#xff0c;对于这个问题&#xff0c;央行行长周小川日前撰文全面为之辩护&#xff1a;对于第一个问题&#xff0c;他的观点是金融业出现了问题就必须救&#xff0c;否则意味着集体的失灵甚至死亡&#xff1b;中…

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

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

Android应用开发—知识点汇总

获取Fragment的context&#xff1a; getActivity().getApplicationContext()或者getActivity()You can use getActivity(), which returns the activity associated with a fragment.The activity is a context (since Activity extends Context).设置TextView的颜色setTextCol…

条件渲染vue

v-if:只渲染一次的情况下&#xff0c;性能更好v-show:频繁切换性能更好 vue虚拟DOM技术 浏览器&#xff1a;渲染引擎&#xff08;慢&#xff09;JS引擎&#xff08;快&#xff09; 用1个JS对象来充当DOM对象&#xff0c;因为JS对象性能比较快&#xff0c;所以用虚拟DOM对象进行…

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

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

git stash和git stash pop

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 git stash 可用来暂存当前正在进行的工作&#xff0c; 比如想pull 最新代码&#xff0c; 又不想加新commit&#xff0c; 或者另外一种情…

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

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

Android应用开发—TextView的动态创建

动态创建TextView的两种方式&#xff1a; 下面介绍两种创建方式&#xff1a; 在drawable里面创建共同依赖的background.xml文件&#xff0c;里面设置shape来设置文本框的一些特殊效果&#xff1a; eg&#xff1a; <?xml version"1.0" encoding"utf-8"…

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…

运算符优先级 必熟记,放到心里

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 &#xff08;表达式&#xff09;/函数名(形参表) . 成员选择&#xff08;对象&#xff09; 对象.成员名 -> 成员选择&#xff08;指针&#xff0…