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 相关文章推荐
ExtJs扩展之GroupPropertyGrid代码
Mar 05 Javascript
JS 文件大小判断的实现代码
Apr 07 Javascript
jQuery 回车事件enter使用示例
Feb 18 Javascript
jquery获取tagName再进行判断
May 29 Javascript
js监听鼠标事件控制textarea输入字符串的个数
Sep 29 Javascript
有关jquery与DOM节点操作方法和属性记录
Apr 15 Javascript
简单分析javascript中的函数
Sep 10 Javascript
Ionic2开发环境搭建教程
Aug 20 Javascript
利用require.js与angular搭建spa应用的方法实例
Jul 19 Javascript
vue异步axios获取的数据渲染到页面的方法
Aug 09 Javascript
浅谈微信小程序flex布局基础
Sep 10 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 Javascript
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调用接口API封装的例子
2019/10/11 PHP
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
JavaScript简单计算人的年龄示例
2017/04/15 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
vue实现登录拦截
2020/06/29 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
python中sleep函数用法实例分析
2015/04/29 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
Django如何批量创建Model
2020/09/01 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
2020/10/12 Python
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
自荐信格式范文
2013/10/07 职场文书
实习教师自我鉴定
2013/12/09 职场文书
小学生家长评语集锦
2014/01/30 职场文书
读书活动总结
2014/04/28 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
学习保证书100字
2015/02/26 职场文书
Golang中channel的原理解读(推荐)
2021/10/16 Golang