鍍金池/ 問答/HTML/ vue elementUI slot-scope無效使用

vue elementUI slot-scope無效使用

圖片描述

以下代碼是elementUI組件中tree的一段代碼,可是右邊的append和remove操作消失,在一些電腦上有,在一些電腦上沒有,請(qǐng)問這是配置的問題還是什么原因?請(qǐng)好心人幫忙解答一下,十分感謝!

<template>
<div class="custom-tree-container">

<div class="block">
    <p>使用 scoped slot</p>
    <el-tree
            :data="data5"
            show-checkbox
            node-key="id"
            default-expand-all
            :expand-on-click-node="false">
        <span class="custom-tree-node" slot-scope="{ node, data }">
            <span>{{ data.label }}</span>
            <span>
              <el-button
                      type="text"
                      size="mini"
                      @click="() => append(data)">
                Append
              </el-button>
              <el-button
                      type="text"
                      size="mini"
                      @click="() => remove(node, data)">
                Delete
              </el-button>
            </span>
        </span>
    </el-tree>
</div>

</div>
</template>
<script>

let id = 1000;

export default {
    data() {
        const data = [{
            id: 1,
            label: '一級(jí) 1',
            children: [{
                id: 4,
                label: '二級(jí) 1-1',
                children: [{
                    id: 9,
                    label: '三級(jí) 1-1-1'
                }, {
                    id: 10,
                    label: '三級(jí) 1-1-2'
                }]
            }]
        }, {
            id: 2,
            label: '一級(jí) 2',
            children: [{
                id: 5,
                label: '二級(jí) 2-1'
            }, {
                id: 6,
                label: '二級(jí) 2-2'
            }]
        }, {
            id: 3,
            label: '一級(jí) 3',
            children: [{
                id: 7,
                label: '二級(jí) 3-1'
            }, {
                id: 8,
                label: '二級(jí) 3-2'
            }]
        }];
        return {
            data4: JSON.parse(JSON.stringify(data)),
            data5: JSON.parse(JSON.stringify(data))
        }
    },

    methods: {
        append(data) {
            const newChild = { id: id++, label: 'testtest', children: [] };
            if (!data.children) {
                this.$set(data, 'children', []);
            }
            data.children.push(newChild);
        },

        remove(node, data) {
            const parent = node.parent;
            const children = parent.data.children || parent.data;
            const index = children.findIndex(d => d.id === data.id);
            children.splice(index, 1);
        },


    }
};
回答
編輯回答
陌上花

您好,您的這個(gè)問題解決了嗎?我也遇到了這個(gè)問題,麻煩您,指導(dǎo)一下謝謝

2017年2月12日 23:34
編輯回答
淡墨

斷斷續(xù)續(xù)糾結(jié)了兩天終于發(fā)現(xiàn)問題了!想起曾經(jīng)搜到過這個(gè)沒答案的問題,特地注冊(cè)個(gè)號(hào)來回答。
如果你是按照官網(wǎng)的文檔來按照的話:npm install element-ui -S
那你是入坑了,因?yàn)槟J(rèn)按照的element-ui是2.0.0-rc版的??!
對(duì)于不熟悉webpack的人來說,這個(gè)坑好大,去官方issues搜,都說是vue版本問題,必須安裝vue 2.5版本以上,才支持slot-scope
然而我重裝vue,安裝2.5.16版本的vue,依舊無效,vue的項(xiàng)目真不好調(diào)試啊,用jquery好歹還能在Chrome打斷點(diǎn)一步步跟著代碼走,梳理大概流程,vue貌似把模板組件都弄成字符串一個(gè)個(gè)eval執(zhí)行(我瞎猜的),不好斷點(diǎn)調(diào)試。
后來突然想起element-ui版本沒看,用npm ls element-ui一看,2.0.0-rc版的!??!最新的Release版本已經(jīng)2.3.7了??!真是官方坑人最為致命啊,趕緊cd到項(xiàng)目,執(zhí)行一個(gè)
npm install element-ui@2.3.7 -S
馬上slot-scope正常使用?。?!

2018年4月22日 08:55