- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的 Chartjs 组件,我正在尝试从后端传递两个数组。不知何故,Vue.js 获取了 Vue 中的数组,但它不显示任何内容。我对 Vue 很陌生,所以请耐心等待。
Chartjs.vue
<template>
<div class="main-content">
<div class="page-header">
<h3 class="page-title">Chart JS</h3>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="#">Home</a></li>
<li class="breadcrumb-item"><a href="#">Charts</a></li>
<li class="breadcrumb-item active">Chart JS</li>
</ol>
</div>
<div class="row">
<div class="col-sm-12">
<div class="card">
<div class="card-header">
<h6>Chartjs</h6>
</div>
<div class="card-body">
<div class="mb-4">
<h5 class="section-semi-title">
Line Chart
</h5>
<line-chart
:labels='["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]'
:values='values'
/>
</div>
<div class="mb-4">
<h5 class="section-semi-title">
Bar Chart
</h5>
<bar-line-chart
:labels='["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]'
:values='values'
:valuesline='valuesline'
/>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script type="text/babel">
import LineChart from '../../../components/chartjs/LineChart.vue'
import BarChart from '../../../components/chartjs/BarChart.vue'
import BarLineChart from '../../../components/chartjs/BarLineChart.vue'
import PieChart from '../../../components/chartjs/PieChart.vue'
import DoughnutChart from '../../../components/chartjs/DoughnutGraph.vue'
export default {
components: {
LineChart,
BarChart,
BarLineChart,
PieChart,
DoughnutChart,
values:[],
valuesline:[]
},
methods: {
async fetchBarChartData ({ anio, sort }) {
await axios.get(`/api/ingresos-por-mes/${anio}`).then(res=>{
this.values=res.data.qty;
this.valuesline=res.data.perc;
});
}
},
mounted() {
this.fetchBarChartData({anio:2018});
},
data () {
return {
pieAndDoughtnut: {
labels: ['Red', 'Blue', 'Yellow'],
data: [300, 50, 100],
bgColors: [
'#FF6384',
'#36A2EB',
'#FFCE56'
],
hoverBgColors: [
'#FF6384',
'#36A2EB',
'#FFCE56'
]
},
values: this.values,
valuesline: this.valuesline
}
}
}
</script>
BarLineChart.vue
<template>
<div class="graph-container">
<canvas id="graph" ref="graph"/>
</div>
</template>
<script>
import Chart from 'chart.js'
export default {
props: {
labels: {
type: Array,
require: true,
default: Array
},
values: {
type: Array,
require: true,
default: Array
},
valuesline: {
type: Array,
require: true,
default: Array
}
},
mounted () {
let context = this.$refs.graph.getContext('2d')
let options = {
responsive: true,
maintainAspectRatio: false,
legend: {
display: false
}
}
let data = {
labels: this.labels,
datasets: [
{
label: 'My First dataset',
backgroundColor: 'rgba(79, 196, 127,0.2)',
borderColor: 'rgba(79, 196, 127,1)',
borderWidth: 1,
hoverBackgroundColor: 'rgba(79, 196, 127,0.4)',
hoverBorderColor: 'rgba(79, 196, 127,1)',
data: this.values
},
{
label: 'My First dataset',
data: this.valuesline,
type: 'line'
}
]
}
this.myBarChart = new Chart(context, {
type: 'bar',
data: data,
options: options
})
},
beforeDestroy () {
this.myBarChart.destroy()
}
}
</script>
<style scoped>
.graph-container {
height: 300px;
}
</style>
奇怪的是,如果我在将参数传递给较低组件时犯了错误。例如:
<line-chart
:labels='["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]'
:values='values.data'
/>
将“.data”添加到值会破坏该组件,但允许其他组件加载下面的图表。
过去有人曾经处理过这个问题吗?我正在使用在 laraspace.in 上找到的仪表板,以防万一。
编辑:我已将其添加到代码和框中,以便您可以更轻松地帮助我。
https://codesandbox.io/embed/vue-template-x4z7b
编辑 2:设法使其与沙箱中的本地值一起工作,但不知何故,当调用 api 时,它在本地不起作用。
最佳答案
抱歉:有关如何获取异步数据并将其集成到应用程序中的 vuejs 文档并不是最好的。我希望他们能够通过更多示例对这里的最佳实践更加有自己的看法。
在进行异步 api 调用时,this.values
是一个空数组(this.values.data
在 api 调用响应之前不存在)。在数据返回之前,vue 创建子组件,该子组件使用空值数组在其中创建图表,从而产生空白图表。您必须等到数据加载后才能创建子组件(以及图表)。那么我们该如何做到这一点呢?
this.loaded = true
向您的 html 发出数据已准备就绪的信号,并在任何内容上使用 v-if="loaded"
依赖于该数据的子组件,请参阅:https://v2.vuejs.org/v2/guide/conditional.html 这是一个工作代码沙箱,其中包含复制您的更改的虚拟 API 调用:https://codesandbox.io/s/vue-template-4b3lm
所有更改均针对 Chartjs.vue 文件进行。
v-if
:当数据传入时,重新渲染组件内的图表(而不是使用 v-if 延迟整个组件)(任何时候 props 改变)。关于javascript - 为什么这个 ChartJS 图表没有被加载? (使用Vue.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57700550/
有没有办法在 vue-chartjs 中制作带圆角的条形图?我在谷歌上搜索了一下,发现我们可以使用此 url 中给出的渲染条的实现来扩展条形图 - How to put rounded corners
我想通过提供两个数组来创建多条垂直线,第一个称为marketing,其中包含诸如“2017-09-21”等日期和一个数组称为 amount,仅包含数字。 我使用 ChartJS 创建了折线图。最终结果
(对不起我的英语)我将 chartjs-plugin-streaming 用于实时 chartjs,我想使用 chartjs-plugin-zoom。 但是缩放不起作用。 当我测试缩放时,出现缩放区域
我使用 angualr2-chartjs 来显示图表。我的问题是当我动态更改选项时图表更新只有一次。在控制台中,我看到一切都很好,但在 View 中我看不到变化。我使用了 chartjs-plugin
我正在尝试创建类似于 www.chartjs.org 顶部的内容其中有一个随机移动的背景条形图。我发现了另一个类似的question ,但是它似乎不起作用。当我在下面添加时,它不会添加除 400x40
感谢任何提示和/或帮助!我在这里碰壁试图让图表呈现。我已经恢复到测试一个非常简单的方法(下面的代码),但我仍然收到以下错误: 类型错误:无法读取未定义的属性(读取“ map ”) 我可以记录从 use
chartjs-plugin-zoom是 Chart.js 的缩放和平移插件 您可以调用 chart.resetZoom() 以编程方式将缩放重置为默认状态。参见 this example on js
我正在尝试将 Chart.js 与 Vue.js 一起使用,这就是我得到的编译结果,但我没有在 GUI 上看到任何显示。 这是我的文件 DonutChart.vue: // NOT SURE IF
好的,所以我正在尝试通过 VueJS 创建一个 ChartJS 实例,以便我可以通过组件内的 AJAX 请求轻松更新其数据。 基本上它可以工作,创建了 ChartJS 实例,但它是空的,高度和宽度为
我想从 chartjs-chart-treemap 添加树状图到我现有的使用 react-chartjs-2 的项目中. 我到目前为止尝试过: import ChartComponent from '
是否可以定义具有多级别/类别轴的条形图? 例如,我想显示地区/省类别,如下 Excel 图表所示: 我找到了this使用多个 xAxes 的示例。 xAxes:[ { id:'xA
我正在使用 chart.js (V2) 尝试构建一个条形图,用户无需将鼠标悬停在任何地方或点击任何地方即可获得更多信息。我提供了两个示例,说明我希望如何编辑我的图表。 Two edited versi
我想使用 Chartjs(chartjs.org) 作为我的图表工具以及使用 TypeScript 的 AngularJS。我已经从 GitHub 安装了 DefinitelyTyped for Ch
我正在使用 chartjs-plugin-datalabels,并且在大图表中显示较小的数据集时值重叠 这是 chartjs-data-plugin 配置 options: { plu
var yLabels = { 1 : 'New', 2 : 'Learning Phase', 3
我正在创建图表以使用图表 js 呈现一些数据。 const data = { labels: ["1 Dec", "8 Dec", "16 Dec", "31 Dec"], dat
我正在尝试将其他数据插入圆环图中。 Controller 将这样的数组传递给 View : [ 0 => array:3 [ "profit" => 20 "sex" => arr
将百分比值添加到图例标签的最简单方法是什么? 我相信它会使用 generateLabels: function (chart) {},谁能提供一个干净的例子? 最佳答案 似乎没有任何本地方式来显示百分
我已经多次看到这个问题,但我找不到适合我的解决方案。 我将一个 Django 变量传递给 Chartjs 进行绘图,所有的个位数都是正确的,但它将两位数变成了一个。像 11 是 1,1...23 是
我正在尝试使用 chartjs 数据标签插件获取每个条上的值。 所以在条形“a”上方 a 想看到数字 30 及以上或在条形“b”内我想看到数字 50。 但它根本没有显示任何值。 任何人都可以帮助并告诉
我是一名优秀的程序员,十分优秀!