1. 在Blazor中使用Chart.js
-
首先,從Chart.js官方網站下載Chart.js庫檔案。
推薦下載這個構建好的版本https://cdnjs.com/libraries/Chart.js,最新版是v4.2.1
-
在Blazor專案中把剛剛下載好的
Chart.js
放到wwwroot目錄下。 -
將下載的Chart.js檔案複製到該資料夾中。
-
在Blazor專案中的Pages資料夾下_Host.cshtml檔案中新增以下程式碼:
<script src="_framework/blazor.webassembly.js"></script> <-- 新增下面這句 --> <script src="~/Chart.js"></script>
-
在Blazor元件中使用Chart.js,需要在元件中新增以下程式碼:
注意!這個canvas標籤的id
非常重要!後面呼叫js的時候要用到它!
在元件頂部新增一行程式碼,注入JSRuntime@page "/" @inject IJSRuntime JS <PageTitle>BlazorWithChartJS</PageTitle> <p> <h2> 在Blazor中使用 <code><strong>JavaScript</strong></code> 呼叫 <code><strong>Chart.JS</strong></code> 繪製曲線圖 </h2> </p> <div class="chart"> <canvas id="AnimationsChart"></canvas> </div>
-
在
Index
元件的@code
程式碼塊中,新增以下C#程式碼:protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { var jsmodule = $"./Pages/Index.razor.js"; var jSObject = await JS.InvokeAsync<IJSObjectReference>("import", jsmodule); await jSObject.InvokeVoidAsync("animationsChart"); } await base.OnAfterRenderAsync(firstRender); }
-
接下來我們在元件所在目錄下建立一個當前元件隔離的js檔案
Index.razor.js
,在元件的程式碼塊中,新增以下JavaScript程式碼:export function animationsChart() { const ctx = document.getElementById('AnimationsChart'); const data = { labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'], datasets: [{ label: 'Looping tension', data: [65, 59, 80, 81, 26, 55, 40], fill: false, borderColor: 'rgb(75, 192, 192)', }] }; const config = { type: 'line', data: data, options: { animations: { tension: { duration: 1000, easing: 'linear', from: 1, to: 0, loop: true } }, scales: { y: { min: 0, max: 100 } } } }; new Chart(ctx, config); }
這將建立一個簡單的折線圖,您可以根據需要更改型別、資料和選項。
-
執行Blazor應用程式,您應該能夠看到您的Chart.js圖表!
更多圖表型別等資訊,請參閱Chart.js官方文件。
上面的相關程式碼我放在GitHub了,有需要的可以檢視:https://github.com/azlis/BlazorChartJS