vue 组件 全局注册和局部注册的实现


Posted in Javascript onFebruary 28, 2018

全局注册,注册的组件需要在初始化根实例之前注册了组件;

局部注册,通过使用组件实例选项注册,可以使组件仅在另一个组件或者实例的作用域中可用:

全局组件

js

Vue.component('tab-title',{
   props:['title'],
   template:'<li v-on:click="$emit(\'change\')">{{title}}</li>'
 })
 Vue.component('tab-content',{
   props:['content'],
   template:'<div>{{content}}</div>'
 })

局部组件demo:

html

<div id="app">
  <ul class="navTab">
   <li v-for="(navTab,index) in navTabs" is="tab-title" v-bind:info="navTab.text" v-bind:class="{active:navTab.isActive}" v-on:addactive="switchActive(index)"></li>
  </ul>
  <div class="tabContent">
   <div v-for="navTab in navTabs" is="tab-content" v-bind:content="navTab.tabContent" 
   v-bind:class="['tab-panel',{active:navTab.isActive}]" v-if="navTab.isActive"></div>
  </div>
  </div>

js

var app=new Vue({
      el: '#app',
     components: {
       'tab-title': {
        props:['info'],//接受父元素传递的参数
        template:'<li v-on:click="$emit(\'addactive\')">{{info}}</li>'//点击时传递通过$emit子元素传递给父元素调用 addactive方法(不能使用驼峰写法)
        },
       'tab-content':{
         props:["content"],
        template:'<div>{{content}}</div>'
       }
     },
     methods:{
       switchActive:function(index){
        for(var i=0;i<this.navTabs.length;i++){
         this.navTabs[i].isActive=false;
        }
        this.navTabs[index].isActive=true;
        
       }
     },
     data:{
      navTabs:[
       {
        text:"tab1",
        isActive:true,
        tabContent:'this is tab1 content'
       },
       {
        text:"tab2",
        isActive:false,
        tabContent:'this is tab2 content'
       },
       {
        text:"tab3",
        isActive:false,
        tabContent:'this is tab3 content'
       }
      ]
     }
    });

组件实例的作用域是孤立的。这意味着不能再子组件的模板内直接引用父组件的数据。要让子组件可以使用父组件的数据,我们需要通过子组件的props选项。

子组件要显式地用 props 选项声明它期待获得的数据

在模板中,要动态地绑定父组件的数据到字模板的props,与绑定到任何普通的HTMO特性相类似。就是使用 v-bind。每当父组件的数据变化时,该变化也会传递给子组件:

所有的vuejs组件都是被扩展的vue实例

每一个Vue实例都会代理这个实例的data属性对象里的所有的属性

所有的Vue实例本身保罗的属性和方法,都以$开头来区别,对应Vue.set

例如:

vm.$data

vm.$methods

vm.$watch

这个有利于和data属性对象的数据来区分

多有的指令都以v-xxx形式存在:

以上这篇vue 组件 全局注册和局部注册的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQUERY复选框CHECKBOX全选,取消全选
Aug 30 Javascript
JS 无法通过W3C验证的处理方法
Mar 09 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
Jul 17 Javascript
js获取select标签的值且兼容IE与firefox
Dec 30 Javascript
iframe窗口高度自适应的实现方法
Jan 08 Javascript
JQuery实现带排序功能的权限选择实例
May 18 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
Sep 04 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
Aug 01 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
May 25 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
Jul 03 Javascript
详解基于vue的移动web app页面缓存解决方案
Aug 03 Javascript
jQuery实现常见的隐藏与展示列表效果示例
Jun 04 jQuery
vue 自定义全局方法,在组件里面的使用介绍
Feb 28 #Javascript
Vue2.0子同级组件之间数据交互方法
Feb 28 #Javascript
bootstrap table支持高度百分比的实例代码
Feb 28 #Javascript
vue 2.x 中axios 封装的get 和post方法
Feb 28 #Javascript
浅析node应用的timing-attack安全漏洞
Feb 28 #Javascript
vue组件传递对象中实现单向绑定的示例
Feb 28 #Javascript
在Vue组件中使用 TypeScript的方法
Feb 28 #Javascript
You might like
php去除换行(回车换行)的三种方法
2014/03/26 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
JS中Object对象的原型概念基础
2018/01/29 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
python Django的web开发实例(入门)
2019/07/31 Python
Python 实现敏感目录扫描的示例代码
2020/05/21 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
公司员工检讨书
2014/02/08 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
办公室主任职责范本
2014/03/07 职场文书
高中生旷课检讨书
2014/10/08 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
大学生助学金感谢信
2015/01/21 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
解除租赁合同协议书
2016/03/21 职场文书