vue的分支及循环结构

您可以在编辑器中c,v以下内容,即可查看(vue文件请自行到官网下载)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./vue.js"></script>
</head>

<body>
    <div id="app">
        <!-- 分支v-if条件不满足不会渲染dom -->
        <div>
            <div v-if="score>=90">优秀</div>
            <div v-else-if="score<90&&score>=80">良好</div>
            <div v-else-if="score<80&&score>=60">一般</div>
            <div v-else>比较差</div>
            <hr>
            <!-- v-show条件不满足也会渲染dom只是把内容隐藏了 -->
            <div v-show="flag">测试v-show</div>
            <button @click="hide">点击隐藏</button>
        </div> 
        <hr>
        <!-- 循环数组 -->
        <div>
            <!-- 循环数组ietm每项内容,index索引 ,只写一个可以吧()去掉 key区分元素提高性能-->
            <div :key="index" v-for="(ietm,index) in fruits">{{ietm}} </div>
        </div>
        <hr>
        <!-- 循环对象 v:,k名,i索引-->
        <div>
            <div v-for="(v,k,i) in obj">{{v}}</div>
        </div>
        <hr>
        <!-- 结合使用 -->
        <div v-if="v==12" v-for="(v,k,i) in obj2">{{v}}</div>
    </div>
    <script type="text/javascript">
        var vm = new Vue({
            // 实例挂载位置
            el: '#app',
            // 实例所需数据
            data: {
                score: 90,
                flag: true,
                fruits: ['apple', 'orange', 'banana'],
                obj: {
                    a: '小明',
                    b: 'uzi',
                    c: 'mlxg'
                },
                obj2: {
                    a: '小明',
                    b: 'uzi',
                    c: 'mlxg',
                    d: 12
                }
            },
            methods: {
                hide: function() {
                    this.flag = !this.flag;
                }
            }
        })
    </script>
</body>

</html>

遇见是缘分,错误请指正

### Vue 实现美观递归树结构 #### 创建递归组件 为了构建一个美观的递归树结构,在 Vue 中可以定义一个能够自我调用的组件来表示每一层节点。这种设计允许无限层次的数据展示,并且易于维护。 ```html <template> <ul :class="treeNodeClass"> <!-- 当前节点 --> <li v-for="(item, index) in data" :key="index"> {{ item.label }} <!-- 子节点存在则继续渲染 --> <TreeItem v-if="item.children && item.children.length" :data="item.children"/> </li> </ul> </template> <script setup> import { defineProps } from 'vue'; const props = defineProps({ data: Array, }); // 定义样式类名以便于CSS美化 const treeNodeClass = "custom-tree-node"; </script> <style scoped> .custom-tree-node { list-style-type: none; padding-left: 20px; /* 调整缩进 */ } .custom-tree-node li { margin-bottom: 8px; } </style> ``` 此代码片段展示了如何通过 `v-for` 循环遍历数据列表中的每一个项目,当遇到含有子项的对象时,则再次实例化相同的 `<TreeItem>` 组件传递给它对应的子集作为新的输入参数[^1]。 #### 数据准备与根组件集成 为了让上述组件正常工作,还需要准备好相应的 JSON 格式的层级数据以及将其挂载至应用的主要入口处: ```javascript // 假设这是来自服务器端或其他地方获取到的一组具有父子关系的信息 const treeData = [ { label: 'Level one', children: [ {label: 'Child node'} ] }, ]; ``` 接着可以在主页面或者其他容器组件里引入并注册该自定义标签: ```html <!-- App.vue 或其他父级组件文件内 --> <TreeItem :data="treeData"></TreeItem> ``` 这样就完成了一个基础版本的可扩展性强、外观整洁有序的树状视图搭建过程[^4]。 #### 添加交互功能(如展开/折叠) 对于更复杂的场景需求来说,比如支持用户点击某个分支后动态加载其下一层的内容,可以通过监听事件配合状态管理机制轻松实现这一特性。这里简单给出一种基于本地存储的状态切换方案: ```html <li @click="toggleExpand(item)" :class="{ expanded: isExpanded(item) }"> ... </li> ``` ```javascript <script setup> ... methods: { toggleExpand(node){ this.$set(node,'_expanded', !node._expanded); }, isExpanded(node){ return node._expanded === true; } }, </script> ``` 以上方式不仅实现了基本的功能性要求,同时也保持了良好的视觉呈现效果[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值