zoukankan      html  css  js  c++  java
  • 16.组件切换

    1.使用`flag`标识符结合`v-if`和`v-else`切换组件

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <script src="./lib/vue-2.4.0.js"></script>
    </head>
    
    <body>
      <div id="app">
        <a href="" @click.prevent="flag=true">登录</a>
        <a href="" @click.prevent="flag=false">注册</a>
    
        <login v-if="flag"></login>
        <register v-else="flag"></register>
    
      </div>
    
      <script>
        Vue.component('login', {
          template: '<h3>登录组件</h3>'
        })
    
        Vue.component('register', {
          template: '<h3>注册组件</h3>'
        })
    
        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
          el: '#app',
          data: {
            flag: false
          },
          methods: {}
        });
      </script>
    </body>
    </html>
    View Code

    2. 使用`component`标签,来引用组件,并通过`:is`属性来指定要加载的组件:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <script src="./lib/vue-2.4.0.js"></script>
    </head>
    
    <body>
      <div id="app">
        <a href="" @click.prevent="comName='login'">登录</a>
        <a href="" @click.prevent="comName='register'">注册</a>
    
        <!-- Vue提供了 component元素 ,来展示对应名称的组件 -->
        <!-- component 是一个占位符, :is 属性,可以用来指定要展示的组件的名称 -->
        <component :is="comName"></component>
    
        <!-- 总结:当前学习了几个 Vue 提供的标签了??? -->
        <!-- component,  template,  transition,  transitionGroup  -->
    
      </div>
    
      <script>
        // 组件名称是 字符串
        Vue.component('login', {
          template: '<h3>登录组件</h3>'
        })
    
        Vue.component('register', {
          template: '<h3>注册组件</h3>'
        })
    
        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
          el: '#app',
          data: {
            comName: 'login' // 当前 component 中的 :is 绑定的组件的名称
          },
          methods: {}
        });
      </script>
    </body>
    </html>
    View Code

    2.使用`:is`属性来切换不同的子组件,并添加切换动画:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <script src="./lib/vue-2.4.0.js"></script>
      <style>
        .v-enter,
        .v-leave-to {
          opacity: 0;
          transform: translateX(150px);
        }
    
        .v-enter-active,
        .v-leave-active {
          transition: all 0.5s ease;
        }
      </style>
    </head>
    
    <body>
      <div id="app">
        <a href="" @click.prevent="comName='login'">登录</a>
        <a href="" @click.prevent="comName='register'">注册</a>
    
        <!-- 通过 mode 属性,设置组件切换时候的 模式 -->
        <transition mode="out-in">
          <component :is="comName"></component>
        </transition>
    
      </div>
    
      <script>
        // 组件名称是 字符串
        Vue.component('login', {
          template: '<h3>登录组件</h3>'
        })
    
        Vue.component('register', {
          template: '<h3>注册组件</h3>'
        })
    
        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
          el: '#app',
          data: {
            comName: 'login' // 当前 component 中的 :is 绑定的组件的名称
          },
          methods: {}
        });
      </script>
    </body>
    </html>
    View Code
  • 相关阅读:
    Git for Windows安装教程
    MySQL 操作已存在的表(ALTER TABLE)
    Xiuno 简约白色主题
    PHP 文件上传操作类
    Leetcode 5. 最长回文子串
    Hexo开篇
    Laravel 模型关联——连带删除
    Layui表单赋初值之 checkbox
    Layui提交表单时验证必选的多选框是否有选中
    自定义 checkbox 和 radio
  • 原文地址:https://www.cnblogs.com/yaboya/p/10270392.html
Copyright © 2011-2022 走看看