0

目前我正在为旧版 API 开发新的 UI。不幸的是,这个提供了列标题的 HTML 源代码。此代码通常会创建一个 FontAwesome 图标。该库将不会在新项目中使用。

我在 CoreUI 的图标库中发现了一个非常相似的图标。现在只需在这一点上渲染图标。然而,到目前为止,还没有一种方法是成功的。如何替换 headerCellTemplate 方法中的图标?

或者也许有一种完全不同的、更好的方法来做到这一点。我不知道我是否在使用这种方法的正确轨道上。您可能可以使用静态模板,但我不知道该怎么做。

import { CIcon } from '@coreui/vue';
import { cilCheckCircle } from '@coreui/icons';

headerCellTemplate: (element, info) => {
    element.innerHTML = curr.ColumnTitle;
    if (element.firstChild.nodeName === 'I') {
        // WORKS
        //element.firstChild.innerHTML = 'Done';

        // ANOTHER EXPERIMENT
        //const componentClass = Vue.extend(cilCheckCircle);
        //const instance = new componentClass();
        //instance.$mount();
        //element.removeChild(element.firstChild);
        //element.appendChild(instance.$el);

        // ALSO NOT WORKING
        return CIcon.render.call(this, cilCheckCircle);
    }
}
4

1 回答 1

0

重温这篇有趣的文章后,我终于找到了解决方案。

import Vue from 'vue';
import { CIcon } from '@coreui/vue';
import { cilCheckCircle } from '@coreui/icons';

headerCellTemplate: (element, info) => {
    element.innerHTML = curr.ColumnTitle;

    if (element.firstChild.nodeName === 'I') {
        const cIconClass = Vue.extend(CIcon);
        const instance = new cIconClass({
            propsData: { content: cilCheckCircle }
        });
        instance.$mount(element.firstChild);
    }
}

不过,我不知道这是否是理想的解决方案。如果您有更好、更简单的解决方案,请随时告诉我。

于 2020-10-30T11:02:10.223 回答