Highcharts中更新series的5种方法

用Highcharts画图时,经常需要更新所画的图表,最常见的就是改变数据以更新图表。在Highcarts中,数据对应的参数是series。这儿就以图1的柱状图为例,列举如何更新series的5种方法,以供参考。源代码可从https://jsfiddle.net/slowlyswimming/6ad5pp3t/16/访问。

1. series.update 

Highcarts图表中,可以有多个series。当我们想更新其中某一个series时,可以直接调用其update方法。效果如图所示。  

 

 

 2. chart.update 

如果想一次性更新多个series,那么就可以直接使用chart.update。除了series,其他参数也可以同时进行更新。要注意的是,chart.update只允许更新原来的series,不允许新增series。比如在这个例子里,只能更新原来的一个或两个series,哪怕多加series,也不会起作用。效果如图所示。

 

3.chart.addSeries 

 如果想要新增series,就得使用chart.addSeries了。一次只能加一个series。注意这个方法有性能问题,当series的长度很长, 且一次性加好多series的时候,图表的反应会很慢。效果如图所示。

 

 

4. series.remove & chart.addSeries 

当我想完全替换原来的series,而不仅仅是在上面做更新和新增的时候,可以采用series.remove和chart.addSeries结合的方法。也就是说,要先去掉所有原来的series,再逐个加入新的。同样,这个方法有性能问题。效果如图所示。 

 

 

5. series.remove/chart.addSeries & chart.update 

第4种方法由于使用了chart.addSeries,导致性能上可能会出现问题。这儿就用一种替换的方法来实现同样的效果。关键就是要比较原来series的数目和新的series的数目,当两个数目不同时,通过series.remove或者chart.addSeries使其相等,再统一调用一次chart.update实现图表的更新。源代码如下。当新的series数目大于原来的时候,效果如图所示。

 

 

### Axure 中继器使用方法详解 #### 什么是中继器? 中继器是一种动态列表容器,可以用来显示和管理一组具有相同结构的数据。它类似于数据库中的表格,每一行代表一条记录,每一列是一个字段。中继器支持数据的增删改查操作,并可以通过设置交互逻辑来实现复杂的功能[^5]。 --- #### 如何初始化中继器? 1. **定义字段** 在中继器属性面板中,单击“编辑字段”,添加所需的字段名(如 `name`、`price` 等),这些字段将作为中继器的列[^2]。 2. **填充初始数据** 可以为中继器预设一些默认数据,在“编辑项”模式下手动输入或导入 JSON 数据格式的内容[^4]。 3. **设计样式** 设置中继器内部组件的布局和外观,使其符合目标效果。例如调整字体大小、颜色以及边距等参数[^1]。 --- #### 增加新行 要向中继器添加一行数据,需执行以下步骤: - 创建一个按钮或其他触发事件的对象; - 配置其交互行为为“在中继器中插入项”,可以选择插入选项的位置(顶部/底部/当前选中位置之后); - 如果希望自动填写某些固定值,则可以在同一动作里设定对应的字段内容。 示例代码如下所示: ```javascript var newItem = {}; newItem["name"] = "产品A"; newItem["price"] = "$100"; repeaterName.insertItem(newItem, "atEnd"); ``` --- #### 删除现有条目 删除某一行的操作相对简单明了: - 设定条件判断哪一项被选取; - 执行移除选定项目的命令即可完成清理工作。 具体脚本片段展示如下: ```javascript if (selectedItems.length > 0){ repeaterName.removeItem(selectedIndex); } else{ alert("请选择至少一项!"); } ``` --- #### 修改已有项目的信息 更新特定单元格内的数值可通过双击进入编辑状态或者编写专门的小程序段来进行修改处理: 实例演示更改价格部分: ```javascript for(var i=0;i<repeaterName.items.length;i++){ var currentItem=repeaterName.getItem(i); if(currentItem.name=="旧品名"){ currentItem.price="$新的金额"; } } ``` --- #### 计算汇总值 如果需要统计某一列所有成员之总和的话,那么就需要遍历整个集合并累加相应属性上的数字值得到最终结果[^3]。 以下是计算总价的一个例子: ```javascript function calculateTotal(repeaterId,columnName){ let totalSum=0; for(let item of eval(`rp_${repeaterId}.items`)){ totalSum+=parseFloat(item[columnName]); } return totalSum.toFixed(2); //保留两位小数 } console.log(calculateTotal('myRepeater','amount')); ``` --- #### 添加序列编号 为了让每笔资料前都有独一无二的流水号呈现出来,我们通常会在渲染阶段动态生成该序号而不是将其保存至实际模型之中。 下面给出一段简单的做法说明: ```javascript onLoad(function(){ rp_myRepeater.setItems(rp_myRepeater.items.map((item,index)=>({...item,no:index+1}))); }); ``` --- ### 注意事项 - 当涉及大量数据加载时应考虑性能优化措施以免影响用户体验。 - 对于复杂的业务场景建议合理规划好前后端分工界面减少重复劳动提高效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值