【问题标题】:angularjs-nvd3-directives updating dataangularjs-nvd3-directives 更新数据
【发布时间】:2014-04-16 13:31:38
【问题描述】:

下午好

我有一个角度控制器,它有我在图表中显示的数据

<nvd3-multi-bar-horizontal-chart
                ng-model="Data"
                data="Data"
                id="exampleId"
                xAxisTickFormat="xAxisTickFormatFunction()"
                yAxisTickFormat="yAxisTickFormatFunction()"
                height={{height}}
                showValues="true"
                color="colorFunction()"
                showXAxis="true"
                margin="{left:100}"
                interactive="true"
                >
            <svg></svg>
</nvd3-multi-bar-horizontal-chart>

编辑: 应用程序需要做的是显示数组中的所有数据,用户可以调整该数组的 1 个元素

我现在尝试在页面上使用 ng-click 按钮来模拟这个,该按钮执行以下方法来调整数组中的 1 个元素

$scope.buttonClick = function(){

        $scope.Data[0].values[0][1] = 2345; //this changes the data but does not update the chart

        $scope.Data = [
            {
                key: "timeData",
                values: [
                    ["test", 1234]
                ]
            }
        ] //this completely overrides the array and replaces it (which i dont want)
    };

控制器更新数据但图表不更新

我通过显示段落中数据的第一个条目进行了测试,该段落确实更新了

有没有人知道如何解决这个问题

(指向 Angular 中使用的指令的链接 chart directive

提前致谢

【问题讨论】:

  • 你能说明你是如何更新数据的吗?我只是在没有问题的情况下完成了它......jsfiddle.net/ncapito/A6Tk5
  • 感谢您的帮助,通过查看您所做的小提琴,我至少看到它发生了变化,这已经是向前迈进了一步,我编辑了我的帖子,向您展示代码的作用和我尝试了什么做改变数据。在 buttonClick 方法中,您会看到我尝试过的两件事,一次实际更新,另一件事更新数据但不更新图表。我不知道为什么会这样......问候
  • 它不知道数据在变化……它只看对$scope.Data的引用。

标签: javascript angularjs d3.js


【解决方案1】:

请发布您的解决方案。

文档说要设置objectequality="true"

参考:nvd3

【讨论】:

  • 这就是它的工作原理,使用 objectequality="true",因为我从 $resource 获取数据,所以在我获取数据之前创建了对象,然后我将数据推送到一个空数组选项
【解决方案2】:

从源码看你需要设置objectequality="false".它设置了$scope.$watch(data, objectequality).

我不是该指令的专家,但请尝试:

<nvd3-multi-bar-horizontal-chart
      ...
      objectequality="false"
      ...
>
        <svg></svg>
</nvd3-multi-bar-horizontal-chart>

【讨论】:

    【解决方案3】:

    你也可以使用这个方法:

    $timeout(function () {
      $scope.api.refresh();
    }, 1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多