详解Vue 全局变量,局部变量


Posted in Javascript onApril 17, 2019

局组件和局部组件

1.先定义组件   Vue.component('组件名', { 组件模板对象 })

注意: 组件名不要使用原生的标签名, 若组件名定义时用的是驼峰命名法, 则调用时用中划线分割后小写
例如: 组件-->mtText   使用时-->   <my-text></my-text>

2.配置组件的模板  注意: 组件的模板内容有且只有一个根元素

3.在视图层里调用 ,用双标签

4.组件是一个独立的作用域, 也可以看成一个特殊的vue实例, 可以有data, methods,computed等等

注意: 组件的data是函数, 函数中需要返回一个对象作为组件的data

全局组件案例

<body>
<div id="app">
  <my-component></my-component>
</div>
<script src="lib/vue-2.4.0.js"></script>
<script>
//全局组件
  Vue.component('myComponent',{
    //1.组件的内容/模板
    template: '<div><div>头部组件</div><h1 @click="fn">呵呵{{msg}}</h1></div>',
    data(){
      return {
        msg:'hello,组件'
      }
    },
    methods:{
      fn(){
        console.log(this.msg);
      }
    }
  })
  let vm = new Vue({
    el:"#app",
    data:{
    },
    methods:{

    },

  })
</script>
</body>

局部组件案例

<body>
<div id="app">
  <my-component></my-component>
  <my-test></my-test>
</div>
<template id="box1">
  <h1>haha</h1>
</template>
<template id="box2">
  <div>
    <ul>
      <li v-for="item in arr">
        {{ item }}
      </li>
    </ul>
  </div>
</template>
<script src="lib/vue-2.4.0.js"></script>
<script>
let vm = new Vue({
    el:"#app",
    data:{
    },
    methods:{

    },
    //局部子组件
    components:{
      // 组件名: {配置项}
      "myComponent":{
        template:'#box1',
        data(){
          return {
            msg:"哈哈"
          }
        }
      },
      "myTest":{
        template:"#box2",
        data(){
          return {
            arr:[1,2,3,4]
          }
        }
      }
    }
  })
</script>
</body>

组件切换:法一

<body>
<div id="app">
  <a href="" @click.prevent=" rel="external nofollow" rel="external nofollow" flag=true">登录</a>
  <a href="" @click.prevent=" rel="external nofollow" rel="external nofollow" flag=false">注册</a>
  <login v-if="flag"></login>
  <register v-else="flag"></register>
</div>
<script src="lib/vue-2.4.0.js"></script>
<script>
  Vue.component("login",{
    template:"<h1>登录组件</h1>"
  })
  Vue.component("register",{
    template:"<h1>注册组件</h1>"
  })
  let vm = new Vue({
    el:"#app",
    data:{
      flag: false
    },
    methods:{
    },
  })
</script>
</body>

组件切换:法二

<style>
    .red{
      color:red;
    }
    .v-enter{
      opacity:0;
      transform: translateX(150px);
    }
    .v-leave-to{
      opacity:0;
      transform: translateX(-150px);
    }
    .v-enter-active,
    .v-leave-active{
      transition: all 0.5s;
      position: absolute;
    }
  </style>
<body>
<div id="app">
  <a href="" :class=" rel="external nofollow" rel="external nofollow" {red: flag=='login'}" @click.prevent="flag='login'">登录</a>
  <a href="" :class=" rel="external nofollow" rel="external nofollow" {red: flag=='register'}" @click.prevent="flag='register'">注册</a>
  <!-- vue提供了一个标签 component标签(理解为一个占位符), 用来展示对应名称的组件 :is属性设置指定的组件名 -->
  <transition>
    <component :is="flag"></component>
  </transition>
</div>
<script src="lib/vue-2.4.0.js"></script>
<script>
  Vue.component("login",{
    template:"<h1>登录组件</h1>"
  })
  Vue.component("register",{
    template:"<h1>注册组件</h1>"
  })
  let vm = new Vue({
    el:"#app",
    data:{
      flag: "login"
    },
    methods:{

    },
  })
</script>
</body>

父组件向子组件传值

<body>
<div id="app">
  <my-component :fromfather="father"></my-component>
</div>
<template id="box1">
  <h1 @click="change">
    {{ fromfather }}
    子组件的数据
  </h1>
</template>
<template id="grandSon">
  <h1>孙子组件的数据</h1>
</template>
<!--1.子组件不能访问父组件的数据
2. 解决办法: ①在引用子组件时, 通过属性绑定 v-bind方法, 把需要传递给子组件的数据以绑定的形式传过来
       ② 在子组件配置项里添加 props: ['传递过来的数据']-->
<script src="lib/vue-2.4.0.js"></script>
<script>
  let vm = new Vue({
    el:"#app",
    data:{
      father:'啊~~这是父组件的数据'
    },
    methods:{
    },
    //局部子组件
    components:{
      // 组件名: {配置项}
      "myComponent":{
        template:'#box1',
        data(){
          return {
            msg:"哈哈"
          }
        },
        //在子组件配置项里添加 props: ['传递过来的数据']
        //注意: 组件中所有的props中的数据, 都是通过父组件传递给子组件的, props中的数据是只读, 无法修改
        props:['fromfather'],
        methods:{
          change(){
            // this.fromfather = "被修改了"
          }
        },
        //局部子子组件
        components:{
          'grandSon':{
            template:'#grandSon'
          }
        }
      }
    }
  })
</script>
</body>

以上所述是小编给大家介绍的Vue全局变量局部变量详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
Jun 22 Javascript
DOM基础教程之模型中的模型节点
Jan 19 Javascript
javascript格式化指定日期对象的方法
Apr 21 Javascript
JavaScript AOP编程实例
Jun 16 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
Aug 24 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
Jun 10 Javascript
AngularJS实现自定义指令及指令配置项的方法
Nov 20 Javascript
JQuery 又谈ajax局部刷新
Nov 27 jQuery
three.js 入门案例详解
Jan 23 Javascript
js实现简单分页导航栏效果
Jun 28 Javascript
微信小程序制作扭蛋机代码实例
Sep 24 Javascript
js实现盒子拖拽动画效果
Aug 09 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 #Javascript
Angular Excel 导入与导出的实现代码
Apr 17 #Javascript
详解Vue路由自动注入实践
Apr 17 #Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
Apr 17 #Javascript
js的继承方法小结(prototype、call、apply)(推荐)
Apr 17 #Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
Apr 17 #Javascript
Vue源码探究之虚拟节点的实现
Apr 17 #Javascript
You might like
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
jquery 笔记 事件
2011/11/02 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
Vue自定义toast组件的实例代码
2018/08/15 Javascript
Python生成验证码实例
2014/08/21 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
Series和DataFrame使用简单入门
2019/11/13 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
舞蹈兴趣小组活动总结
2014/07/07 职场文书
大连星海广场导游词
2015/02/10 职场文书
论文致谢词范文
2015/05/14 职场文书
学会感恩主题班会
2015/08/12 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers
分析并发编程之LongAdder原理
2021/06/29 Java/Android