【问题标题】:How to live update a variable, and have it affect something?如何实时更新变量,并让它影响某些东西?
【发布时间】:2019-07-16 14:17:56
【问题描述】:

给你们的另一个问题:

我有我的index.html 文件,它有一个脚本和函数(函数由一个按钮触发):

function myFunction() {
  domainA = domainA - 5;
  domainB = domainB - 5;
}

这些变量在.js 文件中定义如下:

var domainA = 500;
var domainB = 1000;

这些变量在 d3 函数 (d3.js v4) 中作为图形的比例域,如下所示:

this._xScale = d3.scaleLinear()
    .domain([domainA, domainB])
    .range([0, this._canvasWidth - 20]);

代码与domainAdomainB的预定义变量一起正常工作,但是当我按下按钮更改这两个变量的值时,我的d3图没有改变。

这是图表无法实时更新的问题吗?这个问题可以用 JQuery 来解决吗?再次感谢任何帮助!

快速更新 一种可能的解决方案是在变量更新后重新加载页面。我无法在我的代码中支持此解决方案,因为重新加载页面会丢失我的代码中的一些数据。

【问题讨论】:

  • 我想上传我的代码,这样人们就可以看到我的图表和它的样子,但是这个图表是一个需要大量设置的大型 Web 应用程序的一部分,并且无法上传到 github方便查看。再次为我提供的资源太少道歉

标签: javascript jquery variables d3.js graph


【解决方案1】:

您需要在点击事件后重新渲染您的 d3 代码。我会创建一个渲染方法并在加载时调用它,然后在您的数据更改后调用它。

【讨论】:

  • 我不太明白你在加载时调用它是什么意思...你能详细说明一下吗?
  • 另外,d3 没有渲染方法。我需要使用 React 来执行此操作,对吗?
  • @a.mosallaei,不,你会创建自己的渲染方法。类似于:``` function render() { this._xScale = d3.scaleLinear() .domain([domainA, domainB]) .range([0, this._canvasWidth - 20]); } ```
  • 太棒了!很高兴听到!
猜你喜欢
  • 2014-01-10
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多