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

HTML:

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

JS:

  1. // 定义一个名为 button-counter 的新组件
  2. var ComponentA = {
  3. //父组件传递过来的数据
  4. props:['selfData'],
  5. template: '<button>{{selfData}}</button>'
  6. };
  7.  
  8. new Vue({
  9. el: '#components-demo',
  10. components: {
  11. 'button-counter': ComponentA
  12. }
  13. });

更灵活的写法如下:

HTML:

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

JS:

  1. <script type="text/template" id="test1">
  2. <!--这样的写法是模板复用的写法,不需要带template这样的标签套在外面,否则会报错-->
  3. <li v-on:click="SendMsg(user)" >
  4. <slot name="test-list-name" :userid="user.id" :username="user.name"></slot>{{user.age}}
  5. </li>
  6. </script>
  7.  
  8. <script>
  9.  
  10. Vue.component('test-list-template', {
  11. //user,父组件传递来的数据
  12. props: ['user'],
  13. //子组件模板,这个模板又通过子组件定义的方法调用了父组件的方法
  14. template: '#test1',
  15. methods: {
  16. SendMsg: function (user) {
  17. //第一个是父组件的方法名,第二个是传递的参数,父组件对应的是v-on:getname,这个getname是父组件的方法名
  18. this.$emit('getname', user);
  19. }
  20. }
  21. });
  22.  
  23. new Vue({
  24. el: '#testList',
  25. data: {
  26. users: [
  27. { id: 1, name: '张三', age: 20 },
  28. { id: 2, name: '李四', age: 22 },
  29. { id: 3, name: '王五', age: 27 },
  30. { id: 4, name: '张龙', age: 27 },
  31. { id: 5, name: '赵虎', age: 27 }
  32. ]
  33. },
  34. methods: {
  35. ShowName: function (data) {
  36. //data,来自于父组件
  37. alert('this is a ' + data.name);
  38. }
  39. }
  40. });
  41. </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. 两个数据库通过DataTable实现差异传输

    两个主要方法 /// <summary>/// 用途:/// 用源表和目标表比较,返回差异的数据(目标表为参照物)/// /// 逻辑:/// 1.合并两个表/// 2.循环合并后得到的表 ...

  2. Django视图系统

    Django的view(视图)                                 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. ...

  3. java生成字母首位8位随机码

    public String getRedomchar(){ String[] char1 = new String[] { "a", "b", "c& ...

  4. HBase 的Get(读),Put(写),Delete(删),Scan(扫描)和Increment(列值递增)

    一.HBase介绍 1.基本概念 HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键.列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平 ...

  5. JAVA中的for循环

    在Java程序中,要“逐一处理”――或者说,“遍历”――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当 然,用其它种类的循环也不是不可以,只是不知道是因为for这个 ...

  6. javassist fr8.0破解

    主要是破解连接数的. 已破解的jar:http://download.csdn.net/download/wolf12/9834152 public static void main(String[] ...

  7. LeetCode 881.救生艇(C++)

    第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人所需的最小船数.(保证每个人都 ...

  8. 使用CSS选择器进行元素定位

    在selenium webdriver中,支持使用CSS选择器来进行元素定位,事实在真的投入工作,大量编辑用例和元素定位的时候,使用css 和 xpath才是经常需要用到的. 之前有专门讲过使用xpa ...

  9. Java中的内存泄漏分析说明

    Java语言的一个关键的优势就是它的内存管理机制.你只管创建对象,Java的垃圾回收器帮你分配以及回收内存.然而,实际的情况并没有那么简单,因为内存泄漏在Java应用程序中还是时有发生的. 下面就解释 ...

  10. css3重点回顾字体

    1.字体 免费字体下载https://cn.ffonts.net/