详解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 $.each遍历JavaScript数组对象实例
Sep 01 Javascript
javascript计时器详解
Feb 28 Javascript
使用console进行性能测试
Apr 27 Javascript
javascript针对cookie的基本操作实例详解
Nov 30 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
May 30 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
Aug 08 Javascript
AngularJS  $modal弹出框实例代码
Aug 24 Javascript
AngularJS中$watch和$timeout的使用示例
Sep 20 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
Nov 16 Javascript
vuex的简单使用教程
Feb 02 Javascript
vue bus全局事件中心简单Demo详解
Feb 26 Javascript
一篇文章弄清楚Ajax请求的五个步骤
Mar 17 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
提升PHP执行速度全攻略(上)
2006/10/09 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
航空大学应届生求职信
2013/11/10 职场文书
春节活动策划方案
2014/01/24 职场文书
小学数学国培感言
2014/03/10 职场文书
寄语是什么意思
2014/04/10 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书