详解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 相关文章推荐
javascript 操作文件 实现方法小结
Jul 02 Javascript
jQuery 工具函数学习资料
Apr 29 Javascript
javascript tips提示框组件实现代码
Nov 19 Javascript
js showModalDialog弹出窗口实例详解
Jan 07 Javascript
javascript跨浏览器的属性判断方法
Mar 16 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
Dec 03 Javascript
JS匿名函数实例分析
Nov 26 Javascript
js事件冒泡与事件捕获详解
Feb 20 Javascript
微信小程序联网请求的轮播图
Jul 07 Javascript
node.js的http.createServer过程深入解析
Jun 06 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
May 09 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
Oct 16 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
JS检测图片大小的实例
2013/08/21 Javascript
require.js的用法详解
2015/10/20 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
详解JS函数防抖
2020/06/05 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
python交互式图形编程实例(一)
2017/11/17 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
Python版名片管理系统
2018/11/30 Python
Django框架实现的分页demo示例
2019/05/25 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
电信专业应届生自荐信
2013/09/28 职场文书
食品安全工作方案
2014/05/07 职场文书
节能环保口号
2014/06/12 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
Python内置数据类型中的集合详解
2022/03/18 Python