1.检测变化

<ul>
<li v-for="item in list">{{item}}</li>
</ul> <script>
export default {
name: 'myComponent',
data() {
return {
list: [1, 2, 3, 4, 5]
}
},
mounted() {
let _self = this;
setTimeout(function() {
_self.list[4] = 6;
});
}
}
</script> 预期渲染后:
.1
.2
.3
.4
.6
实际:
.1
.2
.3
.4
.5

如何使变化能够被检测到?

// 更新数组
Vue.set(this.list, indexOfItem, newValue); // 给对象添加一个新的属性
Vue.set(this.object, 'name', 'Tom');

组件间通信

1.父子组件通信

(1).父传给子组件

   pass props

父组件:

<template>
<parent>
<child :list="list"></child> //在这里绑定list对象
</parent>
</template>
import child from 'child.vue';
export default{
components:{child},
  data(){
   return {
   //父组件的数据绑定到子组件的包裹层上
  list:["haha","hehe","xixi"];
}
}

子组件 child.vue:(子组件要嵌套到父组件中)

<template>
<ul>
<li v-for="(item ,index)in list">{{item}}</li>
</ul>
</template>
export default{
props:{
    list:{
      type:Array,//type为Array,default为函数
      default(){
        return [
          "hahaxixihehe"//默认初始值
        ]}}
    },//用props属性进行传数据,此时子组件已经获取到list的数据了
data(){
return {}
}
}

(2).由上面可见,props数据流是单向的。父组件属性更新时,将会传递给子组件,反过来则是不可以的。

 子传父

Emit events

Parent
{
name: "parent",
template: '<div><span>Parent</span><child v-on:alarm="alarmHandler"></child></div>',
methods: {
alarmHandler() {
alert('Alarm!');
}
}
} Child
{
name: "child",
template: '<div>Child</div>',
mounted() {
let _self = this;
setTimeout(function(){
// 发出事件
_self.$emit('alarm');
}, 2000);
}
} 父组件监听子组件的事件,当子组件发出事件时,父组件处理。由此完成子组件向父组件传递信息的过程。

直接操作子组件(通过ref属性可以直接访问子组件)

Parent
{
name: "parent",
template: '<div><span>Parent</span><child ref="childComponent"></child></div>',
mounted() {
let child = this.$refs.childComponent;
}
} Child
{
name: "child",
template: '<div>Child</div>',
data() {
return {
id: 1
}
},
methods: {
childFunc() {}
}
}

非父子组件的通信(事件总线)

Event bus

var eventBus = new vue();

//在A组件发送事件
eventBus.$emit('msgChanged'); //在B组件监听发送的事件
eventBus.$on('msgChanged',function(){
//do something...
})

vue学习笔记(1)的更多相关文章

  1. Vue学习笔记-2

    前言 本文非vue教程,仅为学习vue过程中的个人理解与笔记,有说的不正确的地方欢迎指正讨论 1.computed计算属性函数中不能使用vm变量 在计算属性的函数中,不能使用Vue构造函数返回的vm变 ...

  2. Vue学习笔记-1

    前言 本文不是Vue.js的教程,只是一边看官网Vue的教程文档一边记录并总结学习过程中遇到的一些问题和思考的笔记. 1.vue和avalon一样,都不支持VM初始时不存在的属性 而在Angular里 ...

  3. vue 学习笔记(二)

    最近公司赶项目,一直也没时间看 vue,之前看下的都快忘得差不多了.哈哈哈,来一起回顾一下vue 学习笔记(一)后,继续向下看嘛. #表单输入绑定 基础用法 v-model 会忽略所有表单元素的 va ...

  4. vue学习笔记之:为何data是一个方法

    vue学习笔记之:为何data是一个方法 在vue开发中,我们可以发现,data中的属性值是在function中return出来的.可为何data必须是一个函数呢?我们先看官方的解释: 当一个组件被定 ...

  5. vue学习笔记(八)组件校验&通信

    前言 在上一章博客的内容中vue学习笔记(七)组件我们初步的认识了组件,并学会了如何定义局部组件和全局组件,上一篇内容仅仅只是对组件一个简单的入门,并没有深入的了解组件当中的其它机制,本篇博客将会带大 ...

  6. vue学习笔记(九)vue-cli中的组件通信

    前言 在上一篇博客vue学习笔记(八)组件校验&通信中,我们学会了vue中组件的校验和父组件向子组件传递信息以及子组件通知父组件(父子组件通信),上一篇博客也提到那是对组件内容的刚刚开始,而本 ...

  7. vue学习笔记(十)路由

    前言 在上一篇博客vue学习笔记(九)vue-cli中的组件通信内容中,我们学习组件通信的相关内容和进行了一些组件通信的小练习,相信大家已经掌握了vue-cli中的组件通信,而本篇博客将会带你更上一层 ...

  8. AntDesign vue学习笔记(七)Form 读写与图片上传

    AntDesign Form使用布局相比传统Jquery有点繁琐 (一)先读写一个简单的input为例 <a-form :form="form" layout="v ...

  9. Vue学习笔记十三:Vue+Bootstrap+vue-resource从接口获取数据库数据

    目录 前言 SpringBoot提供后端接口 Entity类 JPA操作接口 配置文件 数据库表自动映射,添加数据 写提供数据的接口 跨域问题 前端修改 效果图 待续 前言 Vue学习笔记九的列表案例 ...

  10. vue学习笔记(三)class和style绑定

    前言 通过上一章的学习vue学习笔记(二)vue的生命周期和钩子函数,我们已经更近一步的知道了关于vue的一些知识,本篇博客将进一步探讨vue其它方面的内容,vue中关于class和style绑定,关 ...

随机推荐

  1. jQuery_DOM学习之------包裹元素的方法

    1..wrap( ):在集合中匹配的每个元素周围包裹一个HTML结构 简单的看一段代码: <span>连接文字</span> 给span元素增加一个a包裹 $('span'). ...

  2. 【small项目】MySQL第二天早上第一次连接超时报错,解决方法com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:

    MySQL第二天早上第一次连接超时报错,解决方法com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link ...

  3. hdu - 1068 Girls and Boys (二分图最大独立集+拆点)

    http://acm.hdu.edu.cn/showproblem.php?pid=1068 因为没有指定性别,所以要拆点,把i拆分i和i’ 那么U=V-M (M是最大匹配,U最大独立集,V是顶点数) ...

  4. ZOJ3956 ZJU2017校赛(dp)

    题意:给出n对(h,c) 记  sumh为选出的h的总和  sumc为选出的c的总和 你可以从中选出任意多对(可以不选) 使得  sumh^2-sumh*sumc-sumc^2 最大 输出最大值 输入 ...

  5. JDBC操作MySQL出现:This result set must come from a statement that was created with a result set type of ResultSet.CONCUR_UPDATABLE, ...的问题解决

    错误如下: This result set must come from a statement that was created with a result set type of ResultSe ...

  6. java编程思想-多态

    java中除了static方法和final方法(private方法属于final方法)之外,其他所有的方法都是动态绑定即运行时绑定. public class test { private void ...

  7. oralce之复杂查询举例

    表结构: S(SNO,SNAME) 代表 学号.学生姓名: C(CNO,CNAME,CTEACHER) 代表 课号,课程名称.授课老师 SC(SNO,CNO,SCGRADE) 代表 学号.课号.课程成 ...

  8. datatables对于某一特定的列进行自定义排序

    首先说下里边的api,其中第一个是order,这个里边是设置哪些排序哪些不排序的,比如:$('#example').dataTable( {     "order": (funct ...

  9. Mahout贝叶斯算法拓展篇3---分类无标签数据

    代码測试环境:Hadoop2.4+Mahout1.0 前面博客:mahout贝叶斯算法开发思路(拓展篇)1和mahout贝叶斯算法开发思路(拓展篇)2 分析了Mahout中贝叶斯算法针对数值型数据的处 ...

  10. 10.11无法打开Xcode6.4的解决方法

    前言 mac升级到10.11版本号并安装Xcode7.0Beta之后,Dock中的Xcode6.3图标上出现一个禁止符号,打开提示到App store更新最新版本号,更新到6.4之后问题依然,还是提示 ...