hualinux 进阶 vue 1.13:todolist(三)组件与实例的关系

目录

一、组件与实例的关系

 二、例子

三、父子组件

3.1 父向子传值

3.1.1 使用props选项传值

3.1.2 使用$ref

3.2 子向父传值$emit


一、组件与实例的关系

每一个Vue的组件都是vue的实例。

任何一个Vue项目都是有千千万万的Vue实例组成的。

 二、例子

怎样判断是一个vue实例,可以把前章的例子修改一下,添加一些方法和事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue test</title>
    <script src="static/js/vue.js"></script>
</head>

<body>
<div id="root">
    <div>
        <input v-model="note"/>
        <button v-on:click="myClick">提交</button>
    </div>
    <ul>
        <todo-item
                v-for="(item,index) of list"
                :key="index" :content="item">
        </todo-item>
    </ul>
</div>

<script>
    Vue.component('todo-item',{
        //接入一下名字叫 content 的外部属性
        props: ['content'],
        template: '<li @click="t1">{{content}}</li>',
        methods: {
            t1: function (){
                alert('你单击了:'+this.content)

            }
        }
    })
    new Vue({
        el: "#root",
        data: {
            note: '',
            list: []
        },
        methods: {
            myClick: function (){
                this.list.push(this.note)
                this.note=''
            }
        }
    })
</script>
</body>


</html>

运行效果,填写一个a 提交,点单击一下a看一下

三、父子组件

在上面的例子中,我们创建一个最外层的实例,在这个实例里我们又创建了一个小的全局todo-item小组件。

在外部包含在内部组件的情况下,外部的叫父组件,里面的小组件我们称为子组件。

3.1 父向子传值

Vue之中,父组件向子组件传值是通过属性的形式进行的,主要是prop,在vue实例中使用 props 关键词。这样就可以变成此组件的一个属性了。

3.1.1 使用props选项传值

使用v-bind命令“:”,这样可以把父组件的数据传给它。上面例子也有说明了。

子组件的props选项能够接收来自父组件数据。没错,仅仅只能接收,props是单向绑定的,即只能父组件向子组件传递,不能反向。分静态和动态

3.1.2 使用$ref

可以见vue导读的$ref

  1. 如果ref用在子组件上,指向的是组件实例,可以理解为对子组件的索引,通过$ref可能获取到在子组件里定义的属性和方法。
  2. 如果ref在普通的 DOM 元素上使用,引用指向的就是 DOM 元素,通过$ref可能获取到该DOM 的属性集合,轻松访问到DOM元素,作用与JQ选择器类似。

这里再补充一点就是,prop和$ref之间的区别:

  1. prop 着重于数据的传递,它并不能调用子组件里的属性和方法。像创建文章组件时,自定义标题和内容这样的使用场景,最适合使用prop。
  2. $ref 着重于索引,主要用来调用子组件里的属性和方法,其实并不擅长数据传递。而且ref用在dom元素的时候,能使到选择器的作用,这个功能比作为索引更常有用到。

例子我这里就不说了,可以看"vue $ref的基本用法"

3.2 子向父传值$emit

父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,就需要使用自定义事件!

我们可以使用 v-on 绑定自定义事件, 每个 Vue 实例都实现了事件接口(Events interface),即:

  • 使用 $on(eventName) 监听事件
  • 使用 $emit(eventName) 触发事件

另外,父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件。

$emit 绑定一个自定义事件event,当这个这个语句被执行到的时候,就会将参数arg传递给父组件,父组件通过@event监听并接收参数。

例子将在下章数据删除功能实现讲解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值