1. 程式人生 > 其它 >釘釘自定義元件使用F2遇到的問題

釘釘自定義元件使用F2遇到的問題

技術標籤:小程式

小程式引入方式官網有教程,參考支付寶小程式引入。
遇到的問題如下:
1.圖表重新整理:
請求到資料給到圖表時,圖表未重新整理,使用:

Charts.changeData(data);//data為後端資料
Charts.repaint();//更新圖表
//兩個要一起用才行

2.餅圖中PieLabel引入報錯,最終引入如下:

 const PieLabel = require('@antv/f2/lib/plugin/pie-label');
 F2.Chart.plugins.register([ PieLabel ]);//引入 PieLabel

3.餅圖內放文字,這個官網有放icon的例子,我們需求中要求加上資料,其實官網程式碼只看懂了部分,我作了部分改動,也算實現了需求。樣式如下:

在這裡插入圖片描述
以下是部分程式碼:

       function _getEndPoint(center, angle, r) {
          return {
            x: center.x + r * Math.cos(angle),
            y: center.y + r * Math.sin(angle)
          };
        }

        var _F = F2,
          Shape = _F.Shape,
          Util = _F.Util,
          G = _F.G;
        var
Vector2 = G.Vector2; Shape.registerShape('interval', 'pie-with-icon', { draw: function draw(cfg, container) { var points = this.parsePoints(cfg.points); var style = Util.mix({ fill: cfg.color }, cfg.style); var coord = this
._coord; if (cfg.isInCircle && coord.transposed) { // 只處理極座標y var newPoints = [points[0], points[3], points[2], points[1]]; var _cfg$center = cfg.center, x = _cfg$center.x, y = _cfg$center.y; var v = [1, 0]; var v0 = [newPoints[0].x - x, newPoints[0].y - y]; var v1 = [newPoints[1].x - x, newPoints[1].y - y]; var v2 = [newPoints[2].x - x, newPoints[2].y - y]; var startAngle = Vector2.angleTo(v, v1); var endAngle = Vector2.angleTo(v, v2); var r0 = Vector2.length(v0); var r = Vector2.length(v1); if (startAngle >= 1.5 * Math.PI) { startAngle = startAngle - 2 * Math.PI; } if (endAngle >= 1.5 * Math.PI) { endAngle = endAngle - 2 * Math.PI; } var middleAngle = (startAngle + endAngle) / 2; var numbricCenter = _getEndPoint(cfg.center, middleAngle, (r + r0) / 2); var sector = container.addShape('Sector', { className: 'interval', attrs: Util.mix({ x: x, y: y, r: r, r0: r0, startAngle: startAngle, endAngle: endAngle }, style) }); var text = container.addShape('text', { attrs: { x: numbricCenter.x, y: numbricCenter.y, textAlign: 'center', textBaseline: 'middle', fontSize: that.props.componentProps.upwardFont, text:cfg.origin._origin.rate+'%', //這裡是要顯示的資料 fill: that.props.componentProps.upwardColor, fontWeight: '400' } }); return [sector,text]; } } });

4.柱狀圖平移,需要用到interaction,這個在引入過程中報錯,未解決。