5、vueJs基础知识05
vue2.0相比于1.0的变化
1、在每个组件模板中,不再支持片段代码,需要一个根元素包裹
组件中模板:
之前:
<template>
<h3>我是组件</h3><strong>我是加粗标签</strong>
</template>
现在: 必须有根元素,包裹住所有的模板代码
<template id="aaa">
<div>
<h3>我是组件</h3>
<strong>我是加粗标签</strong>
</div>
</template>
2、关于组件定义
a、Vue.extend 这种方式,在2.0里面有,但是有一些改动,这种写法,即使能用,咱也不用——废弃
b、Vue.component(组件名称,{ 在2.0继续能用
data(){}
methods:{}
template:
});
c、2.0推出一个组件,简洁定义方式(json形式):
var Home={
template:' ' -> 类似于之前的 Vue.extend()
};
3、生命周期
vue1.0:
init
created
beforeCompile
compiled
ready √ -> mounted
beforeDestroy
destroyed
vue2.0:
beforeCreate 组件实例刚刚被创建,属性都没有
created 实例已经创建完成,属性已经绑定
beforeMount 模板编译之前(挂载)
mounted 模板编译之后,插值完成,代替之前ready *
beforeUpdate 组件更新之前
updated 组件更新完毕 *
beforeDestroy 组件销毁前
destroyed 组件销毁后
4. 循环
2.0里面默认就可以添加重复数据,不用track by了
arr.forEach(function(item,index){
});
去掉了隐式一些变量,1.0可以不写index,但是2.0必须写上index,并且数据顺便换了
$index $key
之前:
v-for="(index,val) in array"
现在:需要显示的写上
v-for="(val,index) in array" 贴近原生的循环的参数顺序
v-for="(val,key) in object"
track-by="id"
变成
<li v-for="(val,index) in list" :key="index">
:key="index"只是为了提高循环性能
5、自定义键盘指令
之前:Vue.directive('on').keyCodes.f1=17;
现在: Vue.config.keyCodes.ctrl=17
6、过滤器
之前:
系统就自带很多过滤
{{msg | currency}}
{{msg | json}}(2.0中直接转成json展示了)
....
limitBy
filterBy
.....
一些简单功能,自己通过js实现
到了2.0, 内置过滤器,全部删除了
官方推荐:lodash 工具库(类似于underscore.js,处理数组和对象等的js库) _.debounce(fn,200)
网址https://www.lodashjs.com/
自定义过滤器——还有
但是,自定义过滤器传参改变了
之前: {{msg | toDou '12' '5'}} (空格隔开)
现在: {{msg | toDou('12','5')}} (类似于函数调用了)
7、组件通信
vm.$emit()
vm.$on();
父组件和子组件:
子组件想要拿到父组件数据:
通过 props配置项
之前1.0,子组件可以更改父组件信息,可以是同步 sync
子组件的属性后面加个.sync同步更改父组件的数据
<child-com :msg.sync="a"></child-com>
现在2.0,不允许直接给父级的数据,做赋值操作
问题,就想更改:
a). 父组件每次传一个对象给子组件, 对象之间引用(同一份数据) √
b). 只是不报错, mounted中转,定义子组件自己的变量,在mounted里面把父元素的数据赋值给子组件的变量 (只改子组件数据)
单一事件管理组件通信: vuex的前身
var Event=new Vue();(通过中转站来进行数据交换)
Event.$emit(事件名称, 数据)
Event.$on(事件名称,function(data){
//data
}.bind(this));
//准备一个空的实例对象
var Event=new Vue(); var A={
template:`
<div>
<span>我是A组件</span> -> {{a}}
<input type="button" value="把A数据给C" @click="send">
</div>
`,
methods:{
send(){
Event.$emit('a-msg',this.a);
}
},
data(){
return {
a:'我是a数据'
}
}
};
var B={
template:`
<div>
<span>我是B组件</span> -> {{a}}
<input type="button" value="把B数据给C" @click="send">
</div>
`,
methods:{
send(){
Event.$emit('b-msg',this.a);
}
},
data(){
return {
a:'我是b数据'
}
}
};
var C={
template:`
<div>
<h3>我是C组件</h3>
<span>接收过来的A的数据为: {{a}}</span>
<br>
<span>接收过来的B的数据为: {{b}}</span>
</div>
`,
data(){
return {
a:'',
b:''
}
},
mounted(){
//var _this=this;
//接收A组件的数据
Event.$on('a-msg',function(a){
this.a=a;
}.bind(this)); //接收B组件的数据
Event.$on('b-msg',function(a){
this.b=a;
}.bind(this));
}
};
5、vueJs基础知识05的更多相关文章
- vue面试题整理vuejs基础知识整理
初级参考 1.v-show 与 v-if 区别 v-show 是css隐藏,v-if是直接销毁和创建,所以频繁切换的适合用v-show 2.计算属性和 watch 的区别 计算属性是自动监听依赖值的变 ...
- 6、vueJs基础知识06
vue动画 transition 之前1.0版本是以 属性的形式展示的 <p transition="fade"></p> .fade-transition ...
- 1、vueJs基础知识01
vue是框架,vue.js是vue框架的核心js库 库:是一个封装好的特定的方法的集合,提供给开发者使用,库没有控制权,控制权在使用者手中.代表:jQuery.underscore.util 框架:框 ...
- 基础知识(05) -- Java中的类
Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...
- Android基础知识05—活动的生命周期
------ 活动的生命周期 ------ Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合.每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置.而每当我们按 ...
- 7、vueJs基础知识07
UI组件库 element-ui和mint-ui 其实都是借鉴了bootstrap bootstrap: 由twitter 开源 简洁.大方 官网文档https://www.bootcss.com/ ...
- 4、vueJs基础知识04
简单的目录结构: |-index.html |-main.js 入口文件 |-App.vue vue文件(组件),官方推荐命名法(首字母大写) |-components 组件存放的文件夹 | ...
- 3、vueJs基础知识03
vue过渡(动画) 本质走的css3: transtion ,animation <div id="div1" v-show="bSign" transi ...
- 2、vueJs基础知识02
vue生命周期: 钩子函数: created -> 实例已经创建 √ beforeCompile -> 编译之前 compiled -> 编译之后 ready -> 插入到文档 ...
随机推荐
- Unity VS2017 调试外部DLL
之前写的C++ DLL VS2012 都可以附加进程的方式调试Unity中的调用 这次用了一个C# DLL VS2017 在Unity 2018上无法附加进程的方式调试 经过一番折腾, 主要是两个问题 ...
- [S32K]FreeRTOS使用
参考官方: Tutorial: FreeRTOS 10.0.1 with NXP S32 Design Studio 2018.R1 (官方component是V8.2.1,此文档介绍如何升级到V10 ...
- ubuntu---画图工具(类似win中的画图软件)
参考 https://zhidao.baidu.com/question/622412096845238452.html https://jingyan.baidu.com/article/6525d ...
- python 程序练习题
1.实现isOdd(),参数为整数,如果整数为奇数,返回True,否则返回Flase 代码如下: def isOdd(a): if a%2==0: return False else: return ...
- Two Year's Harvest
转眼间来到这里已经两年,在懵懵懂懂中渐渐在成长,一步一步走过脚下的路.这两年你说长,时间也是不短,但说长吧,时间又匆匆在指间匆匆流走.还记得大一时老师为我们讲专业课,那时候还不知道TGB,只是在五月的 ...
- vm.$attrs与inheritAttrs详解
1. inheritAttrs 在vue官网的解释如下 个人理解:父组件A上引入子组件B,在B子组件上加上一些属性(class.style除外),这些属性能否在子组件B的根元素上继承,默认值为true ...
- 2019-2020-1 20199301《Linux内核原理与分析》第四周作业
Week4 MenuOS的构造 一.上周复习 计算机的三大法宝: 存储程序计算机: 函数调用堆栈: 中断. 操作系统的两把宝剑: 中断上下文-保存现场和恢复现场 进程上下文 二.Linux内核源代码简 ...
- Java—网络编程总结(整理版)
1. 概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来的,实现资源共享和数据传输的系统.网络编程就是编写程序使互联网的两个(或多个)设备(如计算机)之间进行 ...
- vim编辑提示存在临时文件,删除隐藏的*.swp文件即可
在Linux下vim编辑过程中,由于某种原因异常退出正在编辑的文件,再次编辑该文件时,会出现如下提示: 使用vim编辑文件实际是先copy一份临时文件并映射到内存给你编辑,编辑的是临时文件,当执行:w ...
- CloudCompare 的简单的使用说明
来自:https://blog.csdn.net/datase/article/details/79797795 File open:打开 save:保存 Global Shift settings: ...