我正在使用composition API在vuejs中构建图表,chartjs@4.2和vue-chartjs@5.2.0

然而,我无法保持选项和数据的反应性,所以我构建了一个按钮,当激活时,缩放将处于活动状态,而当不活动时,缩放会被重置。但我没有设法将这种反应性保持在组件内<;条形图>;。更专业的是,我会让grafico条在其他视觉效果中充当过滤器(就像Power BI一样)。有人能帮我吗?

我有一个包含操作码和数据集的js文件:

export const optionBar = {
  responsive: true,
  maintainAspectRatio: true,
  plugins: {
      datalabels: {
        formatter: function(values) {
          return new Intl.NumberFormat('pt-br',{ maximumFractionDigits: 2, minimumFractionDigits:2, }).format(values)
      }
    },
    zoom: { 
      zoom: {
      wheel: {
        enabled: true,
      },
      drag: {
        enabled: true,
        backgroundColor: 'rgba(12, 173, 241, 0.10)'
      },
      pinch: {
        enabled: true
      },
      mode: 'x'
    }
  }
  }
}

export const dataSet = {
  labels: [1,2,3,4],
  datasets: [
    {
      label: `test`,
      data: null,
     },
    ],
  }

我可以在控制台日志和模板中使用{{}}看到chartOption的更改,但我的图表不会相应更新。根据我在文档中看到的,根据更新的版本(2022-23),prop:options将通过在vue-chartjs中包含手表来“赞扬”选项中的任何更改:

<template>
//Toggle Button that change the boolean value and active changes in chartOption
   <button @click="ZoomAtivo" > {{zoomEnable}} </button> {{chartOptions.plugins  }}
              <div class="card "> 
                <div class="card-body">
                  <div class="card-header border-0 d-flex justify-content-between">
                    <h4 class="card-title mb-0">
                      Serie Temporal
                    </h4>
                    <div class="d-flex p-2">
                  <div                   
                    v-for="value in dateF" :key="value.id" 
                    class="btn-group btn p-0 mx-1" role="group" aria-label="Basic radio toggle button group">
                    <input type="radio" class="btn-check" name="btnradio" :id="value.id_date_mode" :checked="value.check" />
                    <label class="btn btn-primary mb-0" :for="value.id_date_mode">
                     
                      {{value.date_mode}}</label> 
                  </div>
                  <p v-if="dateF == 1"> teste</p>
                </div> 
                  </div>
                 
                  <Bar v-if="load" class="STChart" :data="datasets" :options="chartOptions" 
:updateMode="'none'" />

            </div> 
          </div>
        
</template>


<script>
import { Bar } from 'vue-chartjs'
import { Chart as ChartJS, Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale } from 'chart.js'
import zoomPlugin from 'chartjs-plugin-zoom';
import ChartDataLabels from 'chartjs-plugin-datalabels';
import moment from 'moment'
import { ref, reactive} from 'vue'

ChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale, zoomPlugin, ChartDataLabels)

import {optionBar,dataSet} from './options.js'
import { dateFilter } from '@/components/date-mode';

export default {
  components: { Bar } ,
  setup() {
    console.log(Bar)
    const chart = ref()
    const zoomEnable = ref(false)
    const data = ref([])
    const dateF = reactive(dateFilter)
    const chartOptions =reactive(optionBar)
    const load = ref(false)
    const data_mov = ref()
    const sobra_perda = ref()
    const datasets = reactive(dataSet)
    const label = ref()
   
    datasets.labels = data_mov
    datasets.datasets[0].data = sobra_perda
    datasets.datasets[0].label = `Sobra_Perda`
    const zmm = reactive({ 
      zoom: {
      wheel: {
        enabled: true,
      },
      drag: {
        enabled: true,
        backgroundColor: 'rgba(12, 173, 241, 0.10)'
      },
      pinch: {
        enabled: true
      },
      mode: 'x'
    }
  })
    const ZoomAtivo = () => {
      zoomEnable.value = !zoomEnable.value
      if(zoomEnable.value) {
       
        chartOptions.plugins.zoom = zmm
        console.log(chartOptions.plugins.zoom)
      } else {
        chartOptions.plugins.zoom=null
        console.log(chartOptions.plugins.zoom)
      }
    }

 async function DateChart(starDate, endDate, p_items) {
          starDate = `01-01-2020`
          endDate = `31-12-2022`

          const url = `http://localhost:1800/dash/Date/${starDate}/${endDate}`
          const respons = await fetch(url, {
            method: 'POST',
            body: JSON.stringify({
              empresa: JSON.parse(localStorage.getItem('companiesGlobalFilter')),
              items: p_items
            }),
            headers: {
              'Content-type': 'application/json; charset=UTF-8'
            },
          });
          data.value = await respons.json()
         
          const title = Object.keys(data.value[0])
          const _Sobra =data.value.map(v => v.sobra_perda)
    
          const _date_movimento =data.value.map(x => {
            let datee = new Date(x.date_movimento)
          const data = moment(datee).utc()
                        datee = data.format('MM/YYYY')
              return datee
          })
          data_mov.value = _date_movimento
          sobra_perda.value = _Sobra
          load.value = true
          label.value = title
              return data_mov
    }
    
    return {
      chartOptions,
      datasets,
      load, data_mov, 
      sobra_perda,dateF,
      zoomEnable, chart, ZoomAtivo
    }
  }
}
</script>
<style scoped>
  @import './css/chartjs.css';
</style>

vue-chartjs在chartOption中发生更改时不呈现的更多相关文章

  1. Vue.js 前端路由和异步组件介绍

    这篇文章主要介绍了Vue.js 前端路由和异步组件介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

  2. vue.js出现Vue.js not detected错误的解决方案

    这篇文章主要介绍了vue.js出现Vue.js not detected错误的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. vue.js Table 组件自定义列宽实现核心方法

    这篇文章主要介绍了vue.js Table 组件自定义列宽实现核心方法,文围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

  4. Vue.js和Vue.runtime.js区别浅析

    这篇文章主要介绍了Vue.js和Vue.runtime.js区别浅析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  5. 详解Vue.js Class与Style绑定

    这篇文章主要为大家介绍了Vue.js Class与Style绑定的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

  6. 利用Vue.js制作一个拼图华容道小游戏

    这篇文章主要为大家详细介绍了如何利用Vue.js编写一个拼图华容道游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  7. Vue.js 状态管理及 SSR解析

    这篇文章主要介绍了Vue.js状态管理及SSR解析,在vue.js中,我们主要说的状态管理库就是vuex,当然,只要你能实现有条理的组织数据,那么它都可以认为是一种状态管理库

  8. Vue.js中v-show和v-if指令的用法介绍

    这篇文章介绍了Vue.js中v-show和v-if指令的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. vue.js项目打包上线全流程

    这篇文章主要介绍了vue.js项目打包上线全流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  10. Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作

    这篇文章主要介绍了Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下

随机推荐

  1. 如何扩展ATmega324PB微控制器的以下宏寄存器?

    我目前正在学习嵌入式,我有以下练习:展开以下宏寄存器:如果有人解决了这个问题,我将不胜感激,以便将来参考

  2. Python将ONNX运行时设置为返回张量而不是numpy数组

    在python中,我正在加载预定义的模型:然后我加载一些数据并运行它:到目前为止,它仍在正常工作,但我希望它默认返回Tensor列表,而不是numpy数组。我对ONNX和PyTorch都是新手,我觉得这是我在这里缺少的基本内容。这将使转换中的一些开销相同。

  3. 在macOS上的终端中使用Shell查找文件中的单词

    我有一个文本文件,其中有一行:我需要找到ID并将其提取到变量中。我想出了一个RexEx模式:但它似乎对我尝试过的任何东西都不起作用:grep、sed——不管怎样。我的一个尝试是:我为这样一个看似愚蠢的问题感到抱歉,但我在互联网上找不到任何东西:我在SO和SE上读了几十个类似的问题,并在谷歌上搜索了几个教程,但仍然无法找到答案。欢迎提供任何指导!

  4. react-chartjs-2甜甜圈图中只有标题未更新

    我正在使用react-chartjs-2在我的网站中实现甜甜圈图。下面是我用来呈现图表的代码。我将甜甜圈图的详细信息从父组件传递到子组件,所有道具都正确传递。当我在beforeDraw函数外部记录props.title时,它会记录正确的值,但当我在beforeDraw函数内部记录props.title时,它将记录标题的前一个值,从而呈现标题的前值。我在这里做错了什么?

  5. 如何在tkinter中使用Python生成器函数?

    生成器函数承诺使某些代码更易于编写。但我并不总是知道如何使用它们。假设我有一个斐波那契生成器函数fib(),我想要一个显示第一个结果的tkinter应用程序。当我点击“下一步”按钮时,它会显示第二个数字,依此类推。我如何构建应用程序来实现这一点?我可能需要在线程中运行生成器。但如何将其连接回GUI?

  6. 如何为每次提交将存储库历史记录拆分为一行?

    我正在尝试获取存储库的历史记录,但结果仅以单行文本的形式返回给我。

  7. 尝试在颤振项目上初始化Firebase时出错

    当尝试在我的颤振项目上初始化firebase时,我收到了这个错误有人知道我能做什么吗?应用程序分级Gradle插件Gradle项目颤振相关性我已经将firebase设置为Google文档已经在另一个模拟器上尝试过,已经尝试过创建一个全新的模拟器,已经在不同的设备上尝试过了,已经尝试了特定版本的firebase,已经尝试添加但没有任何效果,已经在youtube上看到了关于它的每一个视频,该应用程序在android和iOS两个平台上都抛出了这个错误

  8. 在unix中基于当前日期添加新列

    我试图在unix中基于时间戳列在最后一个单元格中添加一个状态列。我不确定如何继续。

  9. 麦克斯·蒙特利。我一直得到UncaughtReferenceError:当我在终端中写入node-v时,节点未定义

    如果这是您应该知道的,请确认:我已将所有shell更改为默认为zsh。当我在终端中写入node-v时,我一直收到“UncaughtReferenceError:nodeisnotdefined”。但它显示节点已安装。我是个新手,在这方面经验不足。

  10. 如何在前端单击按钮时调用后端中的函数?

    那么如何在后端添加一个新的端点,点击按钮调用这个函数。

返回
顶部