组件的基本写法可以如下:

HTML:

 <div id="components-demo">
<button-counter self-data="this is my template"></button-counter>
</div>

JS:

// 定义一个名为 button-counter 的新组件
var ComponentA = {
//父组件传递过来的数据
props:['selfData'],
template: '<button>{{selfData}}</button>'
}; new Vue({
el: '#components-demo',
components: {
'button-counter': ComponentA
}
});

更灵活的写法如下:

HTML:

<!--props:父dom把数据传递给子DOM组件的属性-->
<!--$emit:子组件通过这个关键字方法可以调用父DOM的方法-->
<!--slot-scope:子组件属性传递到父DOM,使用此关键字进行接收后可以展示其中的属性值-->
<!--原则:组件和父DMO是单向的,即,父属性的修改会影响到子属性,但是子属性的修改不可以影响父属性和双向绑定的定义还有一点差异-->
<div id="testList">
<ul scope="tt">
<!--user这样的自定义数据属性除了使用v-bind以外,还可以简写为:user="item"-->
<test-list-template v-on:getname="ShowName" v-for="item in users" v-bind:user="item" >
<!--作用域插槽必须添加template,v2.5版本推荐使用slot-scope,之前的版本使用scope-->
<!--这里的userinfo就是slot这个插件所传递过来的对象,这个对象可以调用插槽中自定义的属性的值,例如userinfo.username和userinfo.userid-->
<template slot="test-list-name" slot-scope="userinfo">
<label>ID:{{userinfo.userid}},姓名:{{userinfo.username}},年龄:</label>
</template>
</test-list-template>
</ul>
</div>

JS:

<script type="text/template" id="test1">
<!--这样的写法是模板复用的写法,不需要带template这样的标签套在外面,否则会报错-->
<li v-on:click="SendMsg(user)" >
<slot name="test-list-name" :userid="user.id" :username="user.name"></slot>{{user.age}}
</li>
</script> <script> Vue.component('test-list-template', {
//user,父组件传递来的数据
props: ['user'],
//子组件模板,这个模板又通过子组件定义的方法调用了父组件的方法
template: '#test1',
methods: {
SendMsg: function (user) {
//第一个是父组件的方法名,第二个是传递的参数,父组件对应的是v-on:getname,这个getname是父组件的方法名
this.$emit('getname', user);
}
}
}); new Vue({
el: '#testList',
data: {
users: [
{ id: 1, name: '张三', age: 20 },
{ id: 2, name: '李四', age: 22 },
{ id: 3, name: '王五', age: 27 },
{ id: 4, name: '张龙', age: 27 },
{ id: 5, name: '赵虎', age: 27 }
]
},
methods: {
ShowName: function (data) {
//data,来自于父组件
alert('this is a ' + data.name);
}
}
});
</script>

VUE的组件DEMO的更多相关文章

  1. Vue异步组件Demo

    Vue异步组件Demo 在大型应用中,我们可能需要将应用拆分为多个小模块,按需从服务器下载.为了进一步简化,Vue.js 允许将组件定义为一个工厂函数,异步地解析组件的定义.Vue.js 只在组件需要 ...

  2. Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例

    Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 ...

  3. Vue自己写组件——Demo详细步骤

    公司近期发力,同时开了四五个大项目,并且都是用Vue来做的,我很荣幸的被分到了写项目公用模块的组,所以需要将公用的部分提取成组件的形式,供几个项目共同使用,下面详细讲一下写Vue组件的具体步骤. 一. ...

  4. 如何理解vue.js组件的作用域是独立的

    vue.js组件的作用域是独立,可以从以下三个方面理解: 1.父组件模板在父组件作用域内编译,父组件模板的数据用父组件内data数据:2.子组件模板在子组件作用域内编译,子组件模板的数据用子组件内da ...

  5. 如何抽象一个 Vue 公共组件

    之前一直想写一篇关于抽象 Vue 组件的随笔,无奈一直没想到好的例子.恰巧最近为公司项目做了一个数字键盘的组件,于是就以这个为例聊聊如何抽象 Vue 的组件. 先上 Demo 与 源码.(demo最好 ...

  6. Vue评论组件案例

    最近学习了Vue前端框架,在这里记录一下组件的用法,我自己试着写了一个评论的组件,大神看到勿喷,欢迎提出宝贵意见. 首先看一下效果图 用到的文件有: <link rel="styles ...

  7. vue全局组件-父子组件传值

    全局组件注册方式:Vue.component(组件名,{方法}) demo: 子组件:upload.vue <template> <div > <div class=&q ...

  8. 16款优秀的Vue UI组件库推荐

    16款优秀的Vue UI组件库推荐 Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基 ...

  9. Vue.js 组件编码规范

    本规范提供了一种统一的编码规范来编写 Vue.js 代码.这使得代码具有如下的特性: 其它开发者或是团队成员更容易阅读和理解. IDEs 更容易理解代码,从而提供高亮.格式化等辅助功能 更容易使用现有 ...

随机推荐

  1. Go语言基础之18--接口编程

    一.接口介绍和定义 1.1 接口定义了一个对象的行为规范 A. 只定义规范,不实现 B. 具体的对象需要实现规范的细节 葵花宝典: 接口就是一层封装,1个例子,封装一个返还浏览器内容的接口.为什么不直 ...

  2. python3 + pycharm+requests+HTMLTestRunner接口自动化测试步骤

    1.python3 环境的搭建,pycharm安装 2.想要用requests做自动化接口测试,那么就得先安装requests这个第三方库,在命令窗口执行 pip install requests 3 ...

  3. TCP/IP、Http、Https、Socket的区别

    网络由下往上分为物理层.数据链路层.网络层( IP协议).传输层( TCP协议).会话层.表示层和应用层(HTTP协议) 接下来我来说说个人理解其中的TCP/IP.Http.Socket的区别 TCP ...

  4. my.资质

    换算到每1点魔力初始,1点魔力等同于22点法资,等于0.00235点成长. 气血=等级*体力资质*0.002895+体力属性点*成长*7 魔法=等级*法力资质*0.002085+法力属性点*成长*5 ...

  5. Vue.js-----轻量高效的MVVM框架(十二、组件动态切换)

    在写html的过程中,我们经常会遇到要写tabs的切换,类似于这样: 在vue中,我们也有自己的组件和属性来实现这样的效果,这个东西我们叫做动态组件. html: <h3>动态组件< ...

  6. protobuf在c++的使用方法以及在linux安装

      https://blog.csdn.net/wangyin668/article/details/80046798 https://www.cnblogs.com/zhouyang209117/p ...

  7. 数据结构---Java---HashSet

    1.概述 1.1 HashSet不是线程安全的: 1.2 当向HashSet存入元素时,调用该对象的hashCode()值,根据hashCode()值来决定元素的存储位置: 如果hashCode()值 ...

  8. python面向对象实例

    ——王宇阳 总结 (Code_boy)2018年11月16日 class Person: name='xxx' age=20 p=Person() #p为实例对象 print(p.name,p.age ...

  9. free -m命令输出详解

    free -m输出有3行: Mem:表示物理内存 -/+ buffers/cached:表示物理内存缓存 Swap:表示硬盘交换分区 其中Mem中的total.used.free.shared.buf ...

  10. MQTT学习之一

    一MQTT特性: 基于C/S,发布订阅(发布者服务器->云平台代理->订阅客户端)一对多结构,适用于低带宽高延时,基于TCP/IP之上.