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 01 Javascript
图片上传即时显示缩略图的js代码
May 27 Javascript
Jquery cookie操作代码
Mar 14 Javascript
制作高质量的JQuery Plugin 插件的方法
Apr 20 Javascript
javascript根据像素点取位置示例
Jan 27 Javascript
浅析BootStrap Treeview的简单使用
Oct 12 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
javascript中this用法实例详解
Apr 06 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
Apr 07 Javascript
jQuery实现ajax的嵌套请求案例分析
Feb 16 jQuery
Vue 中 a标签上href无法跳转的解决方式
Nov 12 Javascript
JS如何把字符串转换成json
Feb 21 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
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
PHPLog php 程序调试追踪工具
2009/09/09 PHP
php排序算法实例分析
2016/10/17 PHP
PHPMailer发送邮件
2016/12/28 PHP
5 cool javascript apps
2007/03/24 Javascript
JavaScript的public、private和privileged模式
2009/12/28 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
python获取网页状态码示例
2014/03/30 Python
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
评析教师个人的自我评价
2014/02/19 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
2014年调度员工作总结
2014/11/19 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
2015年安全生产责任书
2015/01/30 职场文书
库房管理员岗位职责
2015/02/12 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
Python pandas之求和运算和非空值个数统计
2021/08/07 Python