highcharts setExtremes在初始加载后不起作用

7xllpg7q  于 2022-11-10  发布在  Highcharts
关注(0)|答案(1)|浏览(160)

Below setExtremes对初始图表工作正常。但是当我切换页面并再次重新打开图表或打开新图表(新json文件)时,below setExtremes停止工作,不再更新最小最大值。任何关于为什么会发生这种情况的建议。

yAxis[BtnID].setExtremes(val1, val2);

我能让它工作的唯一方法是通过强制重新加载我的应用程序,然后当我重新打开图表或打开新图表(新的json文件)时它工作。下面是我的实际代码。json数据没有问题。我得到的BtnID,val1,val2值很好,只有setExtremes不工作(第一次工作,但之后不工作)。
点击导航栏上的按钮,如下图所示,打开一个模态,用户在其中输入val1和val2。然后将其发送到index.js。
Navbar.razor:

<button @ref="_btn1Ref" id="0" @onclick=OpenDialog1>dialog1</button>
 <button @ref="_btn2Ref" id="1" @onclick=OpenDialog2>dialog2</button>

@code{

private MyData model1 = new MyData { val1= 0, val2= 0 };
private MyData model2 = new MyData { val1= 0, val2= 0 };

private IModalDialog? modalDialog;

private async Task OpenDialog1()
{
    var request = new ModalRequest { InData = this.model1 };
    if (this.modalDialog is not null)
        await modalDialog.ShowAsync<MyForm>(request);      
    await JSRuntime.InvokeVoidAsync("getValues", this.model1.val1, this.model1.val2, _btn1Ref);
}
    ...

Index.razor:

protected override async Task OnAfterRenderAsync(bool firstRender)
{
    var fileName = @fileNameFromLandingPage;       
    await JSRuntime.InvokeVoidAsync("CreateChart", fileName);

}

Index.js:

function CreateChart(fileName) {  
   $.getJSON(fileName, function (data) {

       var chart = Highcharts.chart('container', {  ....

       //Actual code
       window.getValues = function (val1, val2, elem) {
       var BtnID = elem.getAttribute('id');
       yAxis[BtnID].setExtremes(val1, val2);     

       // If I directly use onclick ID to setExtremes instead of window.getValues, it always works. But not able to pass dialog val1 val2.Have harcoded below.
             $("#0").click(function () {
                 yAxis[0].setExtremes(4, 8);
             });

       }

   });
 }
2vuwiymt

2vuwiymt1#

不确定这是否导致了问题,但为什么window.getValues嵌套在CreateChart函数中?您的Index.js应该如下所示:

function CreateChart(fileName) {  
    $.getJSON(fileName, function (data) {

       ...
       //Actual code
    });
}

function getValues(val1, val2, elem) {    
    var BtnID = elem.getAttribute('id');
    yAxis[BtnID].setExtremes(val1, val2);                  
}

相关问题