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 相关文章推荐
JS类中定义原型方法的两种实现的区别
Mar 08 Javascript
比较搞笑的js陷阱题
Feb 07 Javascript
根据json字符串生成Html的一种方式
Jan 09 Javascript
node.js中的fs.open方法使用说明
Dec 17 Javascript
js实现仿微博滚动显示信息的效果
Dec 21 Javascript
AngularJS实现分页显示数据库信息
Jul 01 Javascript
JavaScript中windows.open()、windows.close()方法详解
Jul 28 Javascript
javascript添加前置0(补零)的几种方法
Jan 05 Javascript
JS SetInterval 代码实现页面轮询
Aug 11 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
Apr 20 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
Mar 04 Javascript
JavaScript分页组件使用方法详解
Jul 26 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
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
python实现计算倒数的方法
2015/07/11 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
python实现ip地址的包含关系判断
2020/02/07 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
市场营销专业推荐信
2013/11/03 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
计算机网络专业求职信
2014/06/05 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书