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 相关文章推荐
正则表达式语法
Oct 09 Javascript
js 实现复制到粘贴板的功能代码
May 13 Javascript
javascript 隔行换色函数代码
Oct 24 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
Oct 11 Javascript
jquery实现商品拖动选择效果代码(自写)
May 28 Javascript
jquery利用ajax调用后台方法实例
Aug 23 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
May 23 Javascript
angularjs中$http异步上传Excel文件方法
Feb 23 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
Jul 26 Javascript
详解vue 项目白屏解决方案
Oct 31 Javascript
vue实现循环滚动列表
Jun 30 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
Sep 01 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抽象类 介绍
2012/06/13 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
jQuery动态添加
2016/04/07 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
Python选课系统开发程序
2016/09/02 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
python定向爬取淘宝商品价格
2018/02/27 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
python实现斗地主分牌洗牌
2020/06/22 Python
美国健康和保健平台:healtop
2020/07/02 全球购物
物流专业大学应届生求职信
2013/11/03 职场文书
新闻专业推荐信范文
2013/11/20 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
网页美工求职信范文
2014/04/17 职场文书
求职信内容怎么写
2014/05/26 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL