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-世界上误解最深的语言分析
Aug 12 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
Mar 04 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
Aug 27 Javascript
jQuery获得内容和属性方法及示例
Dec 02 Javascript
原生js页面滚动延迟加载图片
Dec 20 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
JS去除空格和换行的正则表达式(推荐)
Jun 14 Javascript
详解JavaScript权威指南之对象
Sep 27 Javascript
js实现字符全排列算法的简单方法
May 01 Javascript
解决bootstrap模态框数据缓存的问题方法
Aug 10 Javascript
详解VUE前端按钮权限控制
Apr 26 Javascript
小程序使用watch监听数据变化的方法详解
Sep 20 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 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
2020/04/11 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
浅析python打包工具distutils、setuptools
2018/04/20 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
转党组织关系介绍信
2014/01/08 职场文书
副董事长岗位职责
2014/04/02 职场文书
招标授权委托书样本
2014/09/23 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
财务会计求职信范文
2015/03/20 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技
Python列表的索引与切片
2022/04/07 Python