ElemeFE / element

A Vue.js 2.0 UI Toolkit for Web
https://element.eleme.io/
MIT License
54.1k stars 14.64k forks source link

collapse手风琴bug #2584

Closed xp44mm closed 7 years ago

xp44mm commented 7 years ago

举个collapse帮助文档中的例子,可以通过联动手段同时打开两个折叠面板:

<div id="app">
    <el-collapse v-model="activeNames" @@change="handleChange">
        <el-collapse-item title="一致性 Consistency" name="1">
            <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div>
            <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div>
        </el-collapse-item>

        <el-collapse-item title="反馈 Feedback" name="2">
            <div>控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;</div>
            <div>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>
        </el-collapse-item>

        <el-collapse-item title="效率 Efficiency" name="3">
            <div>简化流程:设计简洁直观的操作流程;</div>
            <div>清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;</div>
            <div>帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</div>
        </el-collapse-item>

        <el-collapse-item title="可控 Controllability" name="4">
            <div>用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;</div>
            <div>结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
        </el-collapse-item>
    </el-collapse>
    <el-collapse v-model="activeNames" accordion>
        <el-collapse-item title="一致性 Consistency" name="1">
            <div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div>
            <div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div>
        </el-collapse-item>
        <el-collapse-item title="反馈 Feedback" name="2">
            <div>控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;</div>
            <div>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>
        </el-collapse-item>
        <el-collapse-item title="效率 Efficiency" name="3">
            <div>简化流程:设计简洁直观的操作流程;</div>
            <div>清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;</div>
            <div>帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</div>
        </el-collapse-item>
        <el-collapse-item title="可控 Controllability" name="4">
            <div>用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;</div>
            <div>结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
        </el-collapse-item>
    </el-collapse>
</div>
<script>
    const app = new Vue({
        el: '#app',
        data() {
            return {
                activeNames: ['1']
            };
        },
        methods: {
            handleChange(activeNames) {
                console.log(activeNames);
            },
        },
    })
</script>
Leopoldthecoder commented 7 years ago

为何要这样使用?

baiyaaaaa commented 7 years ago

这算什么bug,这就是正常的,可以去理解下组件状态和数据流的关系。

xp44mm commented 7 years ago

@baiyaaaaa 手风琴组件如果绑定数组就会打开两个面板: <el-collapse v-model="activeNames" accordion 应该修改手风琴逻辑为这样:如果v-model一个字符串,显示字符串的面板,如果字符串数组就显示[0]字符串对应的面板,el-collapse逻辑是新打开面板,用Array.shift将字符串插入到数组的开头。