zoukankan      html  css  js  c++  java
  • 通过引用组件实现做菜单栏

    前端样式

    使用了iview的布局组件

    控制左菜单栏的前端主父组件代码

    <template>
        <div id="Home">
            <Layout :style="{minHeight: '100vh'}" >
                <Sider collapsible :collapsed-width="78" v-model="isCollapsed">
                    <Menu 
                        v-model="option"  
                        active-name="detail" 
                        theme="dark" 
                        width="auto" 
                        :class="menuitemClasses" 
                        @on-select="changeOption($event)">
                        <MenuItem v-for="(item,index) in menuList" :key="index" :name="item.name">
                            <Icon :type="item.icon"></Icon>
                            <span >{{item.detail}}</span>
                        </MenuItem>
                    </Menu>
                </Sider>
                <Layout>
                    <Card>
                        {{option}}
                        <cluster-info v-if="option=='detail'"></cluster-info>
                        <topic-apply v-if="option=='topicApply'"></topic-apply>
                        <change-white-list-apply v-if="option=='whitelist'"></change-white-list-apply>
                    </Card>
                </Layout>
            </Layout>
        </div>
    </template>
    
    <script>
        import ClusterInfo from '../components/cluster/ClusterInfo'
        import TopicApply from '../components/cluster/TopicApply'
        import ChangeWhiteListApply from '../components/cluster/ChangeWhiteListApply'
        export default {
            name:'Home',
            data () {
                return {
                    isCollapsed: false,
                    menuList: [
                        {
                        name: "detail",
                        detail: "集群概述",
                        icon: "ios-archive-outline"
                        },
                        {
                        name: "topicApply",
                        detail: "申请Topic",
                        icon: "ios-archive-outline"
                        },
                        {
                        name:"whitelist",
                        detail: "白名单新增",
                        icon: "ios-create-outline"
                        },
                    ],
                    option:"detail",
                };
            },
            mounted(){
            },
            created(){
                // this.$nextTick(()=>{
                //     console.log('refs:')
                //     console.log(this.$refs.menu)
                // })
            },
            computed: {            
                menuitemClasses: function () {
                    return [
                        'menu-item',
                        this.isCollapsed ? 'collapsed-menu' : ''
                    ]
                }
            },
            components:{
                ClusterInfo,
                ChangeWhiteListApply,
                TopicApply
            },
            methods:{
                changeOption(e){
                    this.option=e
                    // console.log('=====')
                    // console.log(this.option)
                    // console.log(e)
                }
            }
        }
    </script>

    1. 通过import 导入组件

    组件即为自定义的vue页面

    2. 在vue实例中通过components注册组件

    3. 组件名是驼峰命名的,直接在template标签内使用组件,如

    组件名为:ClusterInfo

    则使用方式为:<cluster_info></cluster_info>

    4. Menu组件绑定数据option,通过option可以判断当前点击的是那个Menu,然后再使用对应的组件将页面渲染

  • 相关阅读:
    使用a标签制作tooltips
    使用editorconfig配置你的编辑器
    JointJS绘制流程图
    用highcharts展现你的数据
    css段落首字母下沉
    sklearn框架的系统学习
    numpy删除二维数据矩阵的行和列
    sklearn中机器学习算法评价指标
    sklearn调用逻辑回归算法
    sklearn调用多项式回归
  • 原文地址:https://www.cnblogs.com/Bccd/p/13301826.html
Copyright © 2011-2022 走看看