Javascript Chart.ygrids.remove和Chart.ygrids.add不能一起工作

Javascript Chart.ygrids.remove和Chart.ygrids.add不能一起工作,javascript,d3.js,charts,billboard.js,Javascript,D3.js,Charts,Billboard.js,根据这张表,我画了一张图表。有两个文本输入,其中可以引入值,这些值将根据它们的值重新生成Y轴 文本输入为一个最小值和一个最大值。如果满足某些条件,图表上必须显示一些消息: 如果在最大输入中引入的值小于实际最小值,则图表左上角应显示以下消息:值小于y最小值 如果在最小输入中引入的值大于实际最大值,则在图表的左下角应显示以下消息:值大于y最大值 如果引入的其他值仍满足这些条件,则消息应保留在图表上 如果引入了最小值

根据这张表,我画了一张图表。有两个文本输入,其中可以引入值,这些值将根据它们的值重新生成Y轴

文本输入为一个最小值和一个最大值。如果满足某些条件,图表上必须显示一些消息:

如果在最大输入中引入的值小于实际最小值,则图表左上角应显示以下消息:值小于y最小值 如果在最小输入中引入的值大于实际最大值,则在图表的左下角应显示以下消息:值大于y最大值 如果引入的其他值仍满足这些条件,则消息应保留在图表上 如果引入了最小值<最大值,则消息应消失 在我的代码中,当引入使消息可见的最小值和最大值的第一个值时,它工作得很好。如果这些值已更改,但条件仍然为真,则它们将消失,这是不应该的。它们必须仅在最小值<最大值时消失

如果我从前两个ifs中删除this.lineView.chart.ygrids.remove调用,它将一个一个地重写消息,每个最小值或最大值应该最多有一条消息

这是我的代码:

如果在最小输入中引入了一个值,则为最小值;如果在最大输入中引入了一个值,则为最大值

updateChart(which) {
    this.lineView.chart.axis.range({max: {y: this.myChart.max}, min: {y: this.myChart.min}});

    if(this.myChart.min > this.myChart.max) {
        if (which === 'max'){
            this.lineView.chart.ygrids.remove(
                {value: this.myChart.max, text: "value smaller than y min", position: "start", class: "max-message"}
            );
            this.lineView.chart.ygrids.add(
                    {value: this.myChart.max, text: "value smaller than y min", position: "start", class: "max-message"}
                );
        }
        if (which === 'min') {
            this.lineView.chart.ygrids.remove(
                {value: this.myChart.min, text: "value bigger than y max", position: "start", class: "min-message"}
            );
            this.lineView.chart.ygrids.add(
                    {value: this.myChart.min, text: "value bigger than y max", position: "start", class: "min-message"}
                );
        }
    }
    if(this.myChart.min < this.myChart.max) {
        this.lineView.chart.ygrids.remove();
    }
}
我猜问题来自于一个接一个地调用remove和add

删除YGRID后,是否真的无法将其添加回


如果您有任何建议,我们将不胜感激。

这是因为网格的添加和删除是通过转换完成的。 因此,如果希望按顺序执行添加和删除网格,请在确定的时间间隔内运行它们

var图表=bb.generate{ 数据:{ 栏目:[ [数据1,30,200,100,400,150,250], [数据2130125014020015050],, [数据3,100200340300250250],, [数据4、80、230、240、100、350、150] ], 类型:酒吧 }, 网格:{ y:{ 线路:[ {值:100,文本:'Label 1'} ] } }, 过渡:{ 持续时间:0 } }; 函数切换删除、添加{ setTimeoutfunction{ chart.ygrids.remove{ 值:删除,文本:值大于y最大值,位置:开始,类别:最小消息 } }, 0; setTimeoutfunction{ chart.ygrids.add{ 值:添加,文本:值大于y最大值,位置:开始,类别:最小消息 }; }, 100; } 图表{宽度:400px;高度:250px;} billboard.js 一 二
.min-message {
    transform: translateY(-40px);
}
.max-message {
    transform: translateY(40px);
}
.min-message line, .max-message line {
    display: none;
}
.min-message text, .max-message text {
    font-size: 15px;
}