VUE2.0学习笔记

news/2024/11/24 13:55:25/
  • v-on:click 可以简写为 @click
  • vm.$data 输出data对象
  • vm.$el 输出对象的html
  • vm.$destroy() 销毁这个实例
  • this. e l , t h i s 指向组件的实例。 el ,this指向组件的实例。 el,this指向组件的实例。el指向当前组件的DOM元素。
  • 8个生命周期, create、mount、destroy、update每个都有before和自身,一共11个
  • 插值表达式 {{变量名 + ’ 字符串’ }} , data:{{变量名: ‘值’}
  • 插值表达式,先去data里找,找不到再去computed里找
<div v-text="变量名 + ' 字符串' "></div> 
  • 直接输出变量内容和后面字符串内容
<div v-html="变量名 +  ' 字符串' "></div>
  • 拼成的值转义成html输出到页面

计算属性

  • 计算属性:
computed:{xxx : function(){return oooo; }}
  • 计算属性有缓存,依赖的变量改变才会变
  • methods也能实现, {{ xxx()}} ,但是没有缓存
 watch:{ xxx:function(){   }}
  • 监听值改变重新执行逻辑
  • computed的计属性里xxx变量还能有 get,set 方法

改变样式

  • class对象绑定:
  :class="{activated:  xxxx}"
  • data里定义 activated 变量,methos写逻辑
:class ="[ class1,class2 ]" 
  • 样式的名称作为变量名
:style="styleObj" , 初始化 data:{ styleObj:{  color: "black" } }
  • 数组也行
  :style="[ styleObj , {fontSize : '20px' }]"

条件渲染

  • data:{ show : false }
  • < div v-if =“show” ></ div> ,false 直接消失
  • < div v-else >aaa </ div> 要紧贴一起使用
  • 还有 < div v-else-if="show === ‘bbb’ " > 这是B</ div>
  • , false 是隐藏,性能高

列表循环

<div v-for=" ( item , index ) of list " :key="item.id"  > 		 	{{item.text}} -- {{index}} 
</div>data: { list: [{id:"1",text: "2"} ] }
  • index 从0开始, id是后端返回的主键,不能通过数组下标方式该值
  • 支持的数组操作,push,pop,shift,unshift,splice,sort,reverse
  • 替换数组 vm.list.splice(1,1,{id:“11”,text:“222”}) 或者 重新赋值
  • <template v-for …> < div>…< span>… </ template>,占位符,页面不会输出

对象循环

<div v-for=" (item,key,index) of obj ">  值,键名,序号 </div>
  • 对象添加属性,需要重新赋值

组件

  • < tr is=“组件别名” > < li >,< option>标签都行,可以用is起别名
  • 组件的定义:
Vue.compoent('组件名称',{data: function() {  return {  xxx : 'dddd' } },template: '模板的html代码'
})
  • 子组件里的data必须返回函数
  • ref 获取dom节点
<div ref='hello'>  </div>
//输出
this.$refs.hello.innerHTML 
  • 子父组件传值
  • 定义子组件时的点击事件监听handClick,handClick定义里 通过 $emit 触发 使用子组件的 change事件监听handleChange, handleChange定义里 找到两个ref对象的逻辑相加
<div id="root"><counter ref="one" @change="handleChange"></counter><counter ref="two" @change="handleChange"></counter><div></div>	
</div>
<script>
Vue.component('counter',{
template: '<div @click="handClick">{{number}} </div>',
data: function(){return {number: 0}
},
methods: {handClick: function(){this.number ++this.$emit('change ')}
}
})var vm =new Vue({
el: '#root',
data: {total: 0
},
methods: {handleChange:function(){this.total = this.$ref.one.number +this.$ref.two.number}}
})
</script>
  • xxx=“0”,0是字符串, :xxx =“0” ,0是数字 ,组件的属性赋值
  • 父组件传值给子组件,通过属性
  • 单向数据流的概念,不能修改父组件传递过来的参数
  • 可以修改参数的副本
  • 子组件接收传值,props:[‘属性名’]

给组件绑定原生事件

监听原生点击事件,
@click 表示监听自定义事件,名字叫 click

<child @click.native="HancleClick"></child>

非父子组件传值(Bus/总线/发布订阅模式/观察者模式)

//总体的定义
Vue.prototype.bus = new Vue()
//子组件里定义 click事件的监听方法
//方法里如下写: 触发事件,携带参数
this.bus.$emit('自定义事件名称',参数)
//在通过子组件里的 mounted 监听事件
//是vue中的一个钩子函数,一般在初始化页面完成后,再对dom节点进行相关操作
this.bus.$on('自定义事件名称',function(value){ //对value的操作 })
//要注意单向数据流 修改值的副本

slot 插槽语法

使用组件时候,里面定义的一些代码, 在子组件定义的template里 用

 <slot></slot>

slot标签 渲染时候就等于 定义的一些代码
当有多个时候,可以用具名slot插槽

<!--具名插槽--><div class="header" slot="header">header</div><div class="footer" slot="footer">footer</div><slot name="footer"></slot><slot name="default-header"><h1>默认header</h1></slot>

作用域插槽

<child><!--作用域插槽 template--><template slot-scope="props"><h1>{{props.item}}</h1></template></child><!-- 子组件传值 -->
<ul><slot v-for="item in list" :item="item"></slot></ul>

动画

  • animate.css 提供了大量的动画效果,官网:https://daneden.github.io/animate.css
  • 使用 Velocity.js 官网:http://velocityjs.org/
  • 多个元素之间的互动效果
<transition mode="out-in">
<div v-if="show" key="hello">Hello World</div>
<div v-else key="bye">Bye World</div>
</transition>
  • 动态组件
<transition mode="out-in">
<component :is ="type"></component> 
</transition>

type传入组件的名称

  • 多个组件
<!--样式 -->
<style>
.v-enter, .v-leave-to {opacity: 0;
}
.v-enter-active , .v-leave-active {transition: opacity 1s;
}
</style><!-- transition-group  相当于包含的每一个都是 transition -->
<transition-group >
<div v-for="item of list" :key="item.id">
{{item.title}}
</div>
</transition-group >
  • 动画封装
    把样式封装在组件里
Vue.component('fade',{
props: ['show'],
template:`
<transition @before-enter="handleBeforeEnter"@enter="handleEnter"><slot v-if="show"></slot></transition>`,
methods: {handleBeforeEnter: function(el){el.style.color = 'red'},handleEnter: function(el,done){setTimeout(() => {el.style.color = 'green'done()},2000)}
}	`
})

推荐笔记:
https://www.bbsmax.com/A/Vx5MbaBgdN/


http://www.ppmy.cn/news/78226.html

相关文章

(九)深入理解蓝牙BLE之“安全管理Part2(SMP legacy pairing)”

目录 前言: 配对: Phase 1:Pairing Feature Exchange Phase 2:Short Term Key (STK) Generation Phase 3:Transport Specific Key Distri

视频课|csdn付费资源变现第一讲,为什么csdn项目值得长期去做?

csdn项目再开始做的时候&#xff0c;想着没有多少人&#xff0c;就随便问了下&#xff0c;发现就来了50来位直接报名。 于是直接开整&#xff0c;刚开始写文&#xff0c;升级流程还比较磕巴&#xff0c;主要是我个人的一些经验值&#xff0c;缺少更多的测验。 随着大家不断地去…

NIFI1.21.0最新版本安装_采用HTTP方式_搭建集群_实际操作---大数据之Nifi工作笔记0050

这里要提一嘴...看中文的,视频或者文档虽然学习会快一点,但是... 有的时候一些新的东西没有中文的,还是得看英文的...时间就了就好了,要不然解决不了问题 英文写的,凡是好东西,肯定是很详细的,并且就是为了让别人弄明白,做了大量解释,所以不用担心看不懂... 首先,把安装包,上…

听说小破站新上一批“高质量”的视频,于是怀揣着“学习”的目的,我用Python将他们全部采集了下来

事情是这样的&#xff0c;昨晚室友悄咪咪的拉着我去他的电脑&#xff0c;说带我欣赏一点高雅的作品&#xff0c;于是这一坐下&#xff0c;便是一晚上… 作为一个乐于分享的博主&#xff0c;本来我是决定直接分享的&#xff0c;但是转念一想&#xff0c;授人以鱼不如授人以渔&am…

【Java EE 初阶】网络编程套接字UDP

目录 1.为什么需要网络编程&#xff1f; 2.什么是网络编程&#xff1f; 3.发送端和接收端 4.请求和响应 5.客户端和服务端 6.如何进行网络编程&#xff08;Socket套接字&#xff09; 1.如何进行网络编程 2.TCP与UDP的区别 1.流套接字&#xff1a;使用传输层TCP协议 2.…

线性表的总结

逻辑结构 逻辑结构 具有相同特性的数据元素的有限序列 特性 有穷性&#xff1a;一个线性表的元素个数是有限的 一致性&#xff1a;一个线性表的所有元素的性质相同&#xff0c;也就是具有相同的数据类型 序列性&#xff1a;所有元素之间的相对…

Metasploit Framework-安全漏洞检测工具使用

一款开源的安全漏洞检测工具&#xff0c;简称MSF。可以收集信息、探测系统漏洞、执行漏洞利用测试等&#xff0c;为渗透测试、攻击编码和漏洞研究提供了一个可靠平台。 集成数千个漏洞利用、辅助测试模块&#xff0c;并保持持续更新。 由著名黑客、安全专家H.D. Moore主导开发…

MySQL_5 有丶牛逼的查询语句

目录 一、分组查询 1.基本语法 : 2.代码演示 : 二、分页查询 1.基本语法 : 2.代码演示 : 三、多表查询 1.定义 : 2.语法 : 3.演示 : 四、嵌套查询 1.定义 : 2.单行子查询 : 1 特点 2 演示 3.多行子查询 : 1 特点 2 演示 4.临时表 : 1 定义 2 演示 5.多列子查询 …