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 相关文章推荐
javascript实现面向对象类的功能书写技巧
Mar 07 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
Aug 01 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
Oct 27 Javascript
JS访问DOM节点方法详解
Nov 29 Javascript
Angular1.x复杂指令实例详解
Mar 01 Javascript
Vue中fragment.js使用方法详解
Mar 09 Javascript
详解vue中computed 和 watch的异同
Jun 30 Javascript
jQuery常用选择器详解
Jul 17 jQuery
vue中的router-view组件的使用教程
Oct 23 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
May 31 Javascript
uniapp与webview之间的相互传值的实现
Jun 29 Javascript
js实现鼠标点击飘爱心效果
Aug 19 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
实用函数4
2007/11/08 PHP
mysql limit查询优化分析
2008/11/12 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
浅谈Python中的模块
2020/06/10 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
selenium如何定位span元素的实现
2021/01/13 Python
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
50岁生日感言
2014/01/23 职场文书
党员公开承诺事项
2014/03/25 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
2015年工程部工作总结
2015/04/30 职场文书
唐山大地震观后感
2015/06/05 职场文书
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers
box-shadow单边阴影的实现
2023/05/21 HTML / CSS