遇到的难题汇总

一、在布局中动态设置左侧导航的高度

布局里可能有很多层级的子组件,在子组件没有完全加载之前,没法知道容器的高度,因此很难正确设置左侧导航的高度。
另外,在交互过程中,容器的高度也会改变,还有当浏览器宽高改变或者屏幕分辨率改变时,这些情况下也需要动态设置左侧导航的高度。
有没有办法在布局里知道是否所有的子组件均已加载完毕?或者有没有办法知道容器的高度是否改变?

一种思路是:不在布局里设置左侧导航高度,在最后一个子组件的componentDidUpdate事件中设置,这样的问题是每个页面都需要找到最后一个子组件并且设置高度。

解决方法:在window的resize事件里监控innerHeight(document.documentElement.clientHeight),并根据innerHeight来动态设置左侧导航的高度。

二、ECharts中横坐标出现重影现象(文本加粗)

正常的文本:

重影的文本:

很奇怪的是:这个问题在有些电脑会出现,有些电脑不会。

------------------------------------ 2019.1.16 Update ------------------------------------
解决方法:
初始化ECharts时将像素比的参数 devicePixelRatio 设置成2倍(默认是 1),注意要在 init 方法的第三个参数中设置,第二个参数是设置主题的,置为 null 即可。

ECharts.init(el); -> ECharts.init(el, null, {devicePixelRatio: 2});

顺便贴下 init 方法的源码:

/**
 * @param {HTMLElement} dom
 * @param {Object} [theme]
 * @param {Object} opts
 * @param {number} [opts.devicePixelRatio] Use window.devicePixelRatio by default
 * @param {string} [opts.renderer] Currently only 'canvas' is supported.
 * @param {number} [opts.width] Use clientWidth of the input `dom` by default.
 *                              Can be 'auto' (the same as null/undefined)
 * @param {number} [opts.height] Use clientHeight of the input `dom` by default.
 *                               Can be 'auto' (the same as null/undefined)
 */
export function init(dom, theme, opts) {
    var existInstance = getInstanceByDom(dom);
    if (existInstance) {
        return existInstance;
    }

    var chart = new ECharts(dom, theme, opts);
    chart.id = 'ec_' + idBase++;
    instances[chart.id] = chart;

    if (dom.setAttribute) {
        dom.setAttribute(DOM_ATTRIBUTE_KEY, chart.id);
    }
    else {
        dom[DOM_ATTRIBUTE_KEY] = chart.id;
    }

    enableConnect(chart);

    return chart;
}
posted @ 2017-05-18 15:36  Kagol  阅读(266)  评论(0编辑  收藏  举报