首页 > 其他分享 >在Blazor中使用Chart.js

在Blazor中使用Chart.js

时间:2023-04-08 12:12:30浏览次数:50  
标签:代码 Chart js 组件 Blazor data

1. 在Blazor中使用Chart.js

  1. 首先,从Chart.js官方网站下载Chart.js库文件。
    推荐下载这个构建好的版本https://cdnjs.com/libraries/Chart.js,最新版是v4.2.1

  2. 在Blazor项目中把刚刚下载好的Chart.js放到wwwroot目录下。

  3. 将下载的Chart.js文件复制到该文件夹中。

  4. 在Blazor项目中的Pages文件夹下_Host.cshtml文件中添加以下代码:

    <script src="_framework/blazor.webassembly.js"></script>
    <-- 添加下面这句 -->
    <script src="~/Chart.js"></script>
    
  5. 在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>
    
  6. 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);
        }
    
  7. 接下来我们在组件所在目录下创建一个当前组件隔离的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);
        }
    

    这将创建一个简单的折线图,您可以根据需要更改类型、数据和选项。

  8. 运行Blazor应用程序,您应该能够看到您的Chart.js图表!

blazorChartJSRunPng

更多图表类型等信息,请参阅Chart.js官方文档。

上面的相关代码我放在GitHub了,有需要的可以查看:https://github.com/azlis/BlazorChartJS

标签:代码,Chart,js,组件,Blazor,data
From: https://www.cnblogs.com/LambertLee/p/17298282.html

相关文章

  • JSON对象
    自定义对象<script>//自定义对象varuser={name:"Tom",age:10,gender:"male",/*eat:function(){alert("吃饭!");}*/eat(){alert("吃饭!")......
  • JS对象
    基础对象Array数组JavaScript中Array对象用于定义数组。定义方式一var变量名=newArray(元素列表);//方式一vararr=newArray(1,2,3,4);定义方式二var变量名=[元素列表];//方式二vararr=[1,2,3,4];访问arr[索引]=值;arr[10]="hello";javaScript......
  • 导入 three.js 库
    发现导入three.js文件的时候,官方文档的写法是:import*asTHREEfrom'three';我并不清除three指的是文件夹还是js文件,如果是后者,应当加上.js后缀由于我并没有使用任何框架,我发现只有导入Three.js文件才能运行:import*asTHREEfrom'../node_modules/three/src......
  • JS函数
    介绍:函数(方法)是被设计为执行特定任务的代码块。定义:JavaScript函数通过function关键字进行定义,语法为:方式一:functionfunctionName(参数1,参数2..){//要执行的代码}注意:形式参数不需要类型。因为JavaScript是弱类型语言返回值也不需要定义类型,可以在函数内部直接......
  • JS基础语法
    书写语法区分大小写:与Java一样,变量名、函数以及其他任何一切东西都是区分大小写的每行结尾的分号可有可无,建议写上注释单行注释://多行注释:/**/大括号表示代码块输出语句一:window.alert写入警告框window.alert('hello1');二:document.write()写入HTML输出d......
  • fastjson学习笔记
    入门详解参考:https://blog.csdn.net/cold___play/article/details/124525519将拿到的json字符串数据,用GsonFormat工具来生成java类参考:https://www.cnblogs.com/1024zy/p/6370305.html......
  • js反调试
    varstartTime=newDate();debugger;varendTime=newDate();varisDev=endTime-startTime>100;varstack=[];if(isDev){while(true){stack.push(this);console.log(stack.length,this)}}内存耗尽的方法更多参考https://baijiahao.baidu.com/s?id=17538......
  • js数组对象如何改变里面对象键名
    方法二中,怎么就通过改变item,arr的值就直接改变了的呢?在JavaScript中,对象是引用类型,当你将一个对象赋值给一个变量时,实际上是将该对象的引用赋值给了变量,而不是复制了该对象本身letobj={name:'jack',age:23}letobj_son=obj;obj_son.name='tome'console.log(obj......
  • Python实现Json文件转为点表示法(Dot-Notation)
    将Json转换为点表示法有很多用途,本文基于Python实现一个简单demo来转换。【原文见我的博客,如有更新请博客园的不一定及时同步改:https://blog.jfz.me/2023/python-json-to-dot-notation.html】{"vehicle":{"car":{"bmw":true,"audi"......
  • npm is known not to run on Node.js v8.15.0
    ########### >npminstall--legacy-peer-depsERROR:npmisknownnottorunonNode.jsv8.15.0You'llneedtoupgradetoanewerNode.jsversioninordertousethisversionofnpm.Youcanfindthelatestversionathttps://nodejs.org/ 删除:C......