一个简单的 TodoList

<body><div id="root"><div><input type="text" v-model="todo"><button @click="handleSubmit">Submit</button><ul><li v-for="(item, index) in items" :key="index">{{item}}</li></ul></div></div><script>new Vue({el: "#root",data: {todo: "hello",items: []},methods: {handleSubmit: function () {this.items.push(this.todo)this.todo = ""}}})</script>
</body>

往数组里面添加元素使用 push 方法,删除使用

组件

全局组件

<body><div id="root"><input type="text" v-model="todo"><button @click="handleSubmit">Submit</button><ul><todo-item v-for="(item, index) in items" :key="index" :content="item"></todo-item></ul></div><script>Vue.component("todo-item", {props: ["content"],template: "<li>{{content}}</li>"})new Vue({el: "#root",data: {todo: "",items: []},methods: {handleSubmit: function () {this.items.push(this.todo)this.todo = ""}}})</script>
</body>

局部组件

<body><div id="root"><input type="text" v-model="todo"><button @click="handleSubmit">Submit</button><ul><todo-item v-for="(item, index) in items" :key="index" :content="item"></todo-item></ul></div><script>var todoItem = {props: ["content"],template: "<li>{{content}}</li>"}new Vue({el: "#root",data: {todo: "",items: []},components: {"todo-item": todoItem,},methods: {handleSubmit: function () {this.items.push(this.todo)this.todo = ""}}})</script>
</body>

组件与实例的关系


<body><div id="root"><input type="text" v-model="todo"><button @click="handleSubmit">Submit</button><ul><todo-item v-for="(item, index) in items" :key="index" :content="item"></todo-item></ul></div><script>var todoItem = {props: ["content"],template: "<li @click='handleClick'>{{content}}</li>",methods: {handleClick: function () {alert(1111)}}}new Vue({el: "#root",data: {todo: "",items: []},components: {"todo-item": todoItem,},methods: {handleSubmit: function () {this.items.push(this.todo)this.todo = ""}}})</script>
</body>

Vue程序 是由众多的 vue实例 构建而成的。对于根实例,对应的模板是挂载点下所有的 Dom 节点;

组件的 data 必须是一个函数

一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝:

data: function () {return {count: 0}
}

事件的发布与订阅

<body><div id="root"><input type="text" v-model="todo"><button @click="handleSubmit">Submit</button><ul><!--订阅事件--><todo-item @delete="handledelete" v-for="(item, index) in items" :key="index" :content="item" :index="index"></todo-item></ul></div><script>var todoItem = {props: ["content", "index"],template: "<li @click='handleClick'>{{index}} - {{content}}</li>",methods: {handleClick: function () {//发布事件this.$emit('delete', this.index)}}}new Vue({el: "#root",data: {todo: "",items: []},components: {"todo-item": todoItem,},methods: {handleSubmit: function () {this.items.push(this.todo)this.todo = ""},//实现事件handledelete: function (index) {this.items.splice(index)}}})</script>
</body>

通过 发布-订阅 模式进行组件间的数据传递和事件通知;

转载于:https://www.cnblogs.com/hippieZhou/p/9484698.html

Vue 系列之 组件相关推荐

  1. VUE系列-Vue中组件的应用(三)

    ​ 大家好,我是前端岚枫,一枚二线城市的程序媛,上篇主要跟分享了<VUE系列-Vue核心应用(二)>,今天主要跟大家分享我整理的vue的组件相关的,主要包括组件声明.组件种类.组件间的几种 ...

  2. 通过自定义组件学习Vue系列(二)【时间轴】(附源码)

    需求: 用于升级日志的显示 效果图: 实现原理: 主要区域分为两块,时间区和内容区,时间区是画一个圆点和显示一个时间,内容区左边一个竖线和文字显示 然后做一下循环,将每个日期的数据显示出来 布局采用f ...

  3. npm 编译打包vue_从零到一教你基于vue开发一个组件库

    前言 Vue是一套用于构建用户界面的渐进式框架,目前有越来越多的开发者在学习和使用.在笔者写完 徐小夕:如何从0到1教你搭建前端团队的组件系统​zhuanlan.zhihu.com 之后很多朋友希望了 ...

  4. Vue系列(2):Vue 安装

    前言:关于页面上的知识点,如有侵权,请看 这里 . 关键词:小白.Vue 安装.Vue目录结构.Vue 构建页面流程 ? 初学者安装 vue 用什么好 大家都知道,学 Vue 最好还是去官网学,官网写 ...

  5. day4 vue 学习笔记 组件 生命周期 数据共享 数组常用方法

    系列文章目录 day1学习vue2笔记 vue指令 day2 学习vue2 笔记 过滤器 侦听器 计算属性 axios day3 vue2 学习笔记 vue组件 day4 vue 学习笔记 组件 生命 ...

  6. 20.番外篇——Vue如何自定义组件并且进行全局配置

    20.番外篇--如何自定义组件并且进行全局配置 前言 1.创建自定义组件 2.导出自定义组件 3.main.js中引入自定义的公共组件并挂在到Vue 4.使用自定义的公共组件 前言 通过之前的系列文章 ...

  7. 基于Vue结合Vant组件库的仿电影APP

    Vue综合案例 Vue综合案例 一.项目概要 1.效果前瞻 2.开发流程 3.开发环境 二.初始化及必要知识点 1.初始化远程仓库 2.创建项目 3.路由规划 4.反向代理配置 5.网络请求封装 6. ...

  8. Vue系列之分支结构v-if和v-show

    文章の目录 一.v-if 二.v-else-if 1.限制: 2.用法 三.v-else 1.限制 2.不需要表达式 四.v-show 写在最后 一.v-if 根据v-if后面表达式的值的真假来有条件 ...

  9. Vue数据代理+事件处理+事件修饰符的作用+计算属性的使用,尚硅谷Vue系列教程学习笔记(2)

    尚硅谷Vue系列教程学习笔记(2) 参考课程:<尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通> 参考链接:https://www.bilibili.com/video/ ...

最新文章

  1. apk转换ipa在线转换工具_gif转换工具
  2. 玩游戏计算机配置,玩游戏的电脑需要什么配置?
  3. java调用sap接口_(二)通过JAVA调用SAP接口 (增加一二级参数)
  4. LiveVideoStack Meet | 苏州:视频会议研发中心一日游
  5. MyBatis传入参数为list、数组、map写法
  6. 教程-Delphi第三方控件安装卸载指南
  7. python中空字符串的布尔值是什么_Python的布尔值与空值
  8. 计算机中Git配置环境变量 - 教程篇
  9. pandas isnull函数检查数据是否有缺失
  10. Java中的两种异常类型及其区别?
  11. BZOJ 1001 平面图转对偶图
  12. win10禁用浏览器css,Win10系统解决使用Edge浏览器下的隐藏设置
  13. python cookies是什么_Python获取cookie有什么用
  14. C#使用wkhtmltopdf将网页存为pdf或图片
  15. 【STM32利用CuBe MX生成HID设备】1-熟悉软件以及生成一个8键的游戏控制器
  16. P13 JPanel 面板
  17. 【Spark深入学习 -10】基于spark构建企业级流处理系统
  18. SKYLIN TerraExplorer Pro 后台控制导航控件的显示隐藏(指北针、放大、缩小等)
  19. 为什么要学习单片机?如何开始上手学习单片机?
  20. 计算机网络——DNS域名解析服务器原理

热门文章

  1. linux tcp重传多会导致软中断在各个核很不均匀么?
  2. 李俊君信电保研面试发言稿及其分析总结
  3. 更改Webshpere的profile端口及删除profile
  4. php 编译安装 png.h,PHP编译安装时常见错误解决办法【大全】
  5. 程序内存区域分配(五个段)--终于搞明白了
  6. ISE中ChipScope软件使用
  7. 神经网络的设计与分析之概述
  8. AutoML自定义搜索网络类(如何在一个大的网络中搜索一个网络)
  9. select frame 什么意思?
  10. day060 ajax文件上传 json补充