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

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. mysql 存储引擎介绍

    一  存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点. 在讲清楚什么是存储引擎之前,我们先来个比喻, ...

  2. day26 网络通讯的整个流程

    一.网络通信原理 1.  互联网的本质就是一系列的网络协议 2.  互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 各层的功能简述: [1]物理层:主要定义物理设备标准,如网 ...

  3. wireshark开发环境搭建

    自己完成了wireshark开发环境的搭建,主要参考资料是wireshark的官方developer-guide.pdf,网址:https://www.wireshark.org/docs/. 现把搭 ...

  4. JDK Throwable

    Throwable 1. 使用大量数组和List常量: private static final StackTraceElement[] UNASSIGNED_STACK = new StackTra ...

  5. 问题:git add 遇到 warning: LF will be replaced by CRLF in 警告(已解决)

    问题描述: git add file_name 提交文件时候提示 自动转换 CRLF 标识 如下图: 解决方法: 执行下面代码在命令行中执行: git config --global core.aut ...

  6. uva 442

    #include<iostream>#include<stack>#include<map>using namespace std;struct node{ int ...

  7. 07-----nodejs 中 npm的使用

    npm是什么? 简单的说,npm就是JavaScript的包管理工具.类似Java语法中的maven,gradle,python中的pip. 安装 傻瓜式的安装. 第一步:打开https://node ...

  8. python--upload file into HDFS 加载文件到HDFS

    模拟:https://creativedata.atlassian.net/wiki/spaces/SAP/pages/61177860/Python+-+Read+Write+files+from+ ...

  9. 使用Dockerfile docker tomcat部署

    在百度上试很多文章都不行,只有这篇可以. 宿主机为:centos64位 //安装docker 1:yum install docker //启动docker 2:systemctl start  do ...

  10. ubuntu 16.04 && google账号问题

    1.按ctrl + H 可以显示文件夹的隐藏内容 2.创建文件夹 sudo mkdir -p /usr/share/fonts/vista         创建文件用 vim filename.xxx ...