vue component组件使用方法详解


Posted in Javascript onJuly 14, 2017

什么是组件

按照惯例,引用Vue官网的一句话:

组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展。 

组件component的注册

全局组件:

Vue.component('todo-item',{
  props:['grocery'],
  template:'<li>{{grocery.text}}</li>'
})
var app7 = new Vue({
  el:"#app7",
  data:{
    groceryList:[
      {"id":0,"text":"蔬菜"},
      {"id":1,"text":"奶酪"},
      {"id":2,"text":"其他"}
    ]
  }
})
<div id="app7">
  <ol>
    <todo-item
      v-for="grocery in groceryList"
      v-bind:grocery="grocery"
      v-bind:key="grocery.id">
    </todo-item>
  </ol>
</div>

局部注册:

var Child = {
 template: '<div>A custom component!</div>'
}
new Vue({
 // ...
 components: {
  // <my-component> 将只在父模板可用
  'my-component': Child
 }
})

DOM模板解析说明

组件在某些HTML标签下会受到一些限制。
比如一下代码,在table标签下,组件是无效的。

<table>
 <my-row>...</my-row>
</table>

解决方法是,通过is属性使用组件

<table>
 <tr is="my-row"></tr>
</table>

应当注意,如果您使用来自以下来源之一的字符串模板,将不会受限

<script type="text/x-template">

JavaScript 内联模版字符串

.vue 组件

data使用函数,避免多组件互相影响

html

<div id="example-2">
 <simple-counter></simple-counter>
 <simple-counter></simple-counter>
 <simple-counter></simple-counter>
</div>

js

var data = { counter: 0 }
Vue.component('simple-counter', {
 template: '<button v-on:click="counter += 1">{{ counter }}</button>',
 data: function () {
  return data
 }
})
new Vue({
 el: '#example-2'
})

如上,div下有三个组件,每个组件共享一个counter。当任意一个组件被点击,所有组件的counter都会加一。

解决办法如下

js

Vue.component('simple-counter', {
 template: '<button v-on:click="counter += 1">{{ counter }}</button>',
 data: function () {
  return {counter:0}
 }
})
new Vue({
 el: '#example-2'
})

这样每个组件生成后,都会有自己独享的counter。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript Undefined,Null类型和NaN值区别
Oct 22 Javascript
Knockout text绑定DOM的使用方法
Nov 15 Javascript
jquery创建表格(自动增加表格)代码分享
Dec 25 Javascript
js 删除数组的几种方法小结
Feb 21 Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 Javascript
JavaScript实现基于Cookie的存储类实例
Apr 10 Javascript
详解Bootstrap创建表单的三种格式(一)
Jan 04 Javascript
JS基础随笔(菜鸟必看篇)
Jul 13 Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 Javascript
Angular4学习笔记router的简单使用
Mar 30 Javascript
浅析Vue 中的 render 函数
Feb 28 Javascript
关于vue 项目中浏览器跨域的配置问题
Nov 10 Javascript
vue-cli单页应用改成多页应用配置详解
Jul 14 #Javascript
Vue filters过滤器的使用方法
Jul 14 #Javascript
vue.js如何更改默认端口号8080为指定端口的方法
Jul 14 #Javascript
Vue computed计算属性的使用方法
Jul 14 #Javascript
JS实现上传图片的三种方法并实现预览图片功能
Jul 14 #Javascript
JS实现数组去重方法总结(六种方法)
Jul 14 #Javascript
Javascript中Promise的四种常用方法总结
Jul 14 #Javascript
You might like
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
php定时执行任务设置详解
2015/02/06 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
php自动载入类用法实例分析
2016/06/24 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
javascript简易画板开发
2020/04/12 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
Python爬虫中urllib库的进阶学习
2018/01/05 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
Python定义函数实现累计求和操作
2020/05/03 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
大学生简历中个人的自我评价
2013/10/06 职场文书
品质主管的岗位职责
2013/12/04 职场文书
决心书范文
2014/03/11 职场文书
2014年人事科工作总结
2014/11/19 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
干部考核工作总结2015
2015/07/24 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
Pandas数据类型之category的用法
2021/06/28 Python
Linux安装Docker详细教程
2022/07/07 Servers