双向绑定不识别 AngularJS 中的变量变化

Two-way binding is not recognising variable change in AngularJS

本文关键字:变量 变化 AngularJS 识别 绑定      更新时间:2023-09-26

我有一个滑块,用于更改控制器中的值,如下所示

指数:

            <div>
                <rzslider
                     rz-slider-model="slider.value"
                     rz-slider-options="slider.options">
                </rzslider>
                     <p>{{slider.value}}</p>
            </div>

控制器:

app.controller('gbarchartController', function($scope) {
$scope.slider = {
          value: 20,
          options: {
            floor: 0,
            ceil: 30
          }
        };

当我更改滑块的值时,下面的代码将其显示为 2 路绑定应该在屏幕上显示。

<p>{{slider.value}}</p>

问题是,如果我尝试通过控制器中的函数访问此变量,它使用已设置的初始值 20。如果我将滑块更改为 10,下面的代码仍然使用值 20。有问题的变量是 $scope.slider.value 。该值用于切割数组的长度,而数组又用于使用 highchart.js 显示图形。

            $scope.graph = function(metric) {
        Highcharts.chart(metric, {
            chart: {
                type: 'column'
            },
            title: {
                text: 'Number Of Executions'
            },
            colors: [
                     '#7CFC00', '#FF0000'
                     ],
            xAxis: {
                categories: numExe.hash.slice(0, $scope.slider.value),
                title: {
                    text: 'Query Hash Value'
                }
            },
            yAxis: {
                title: {
                    text: '% of Total Executions'
                }
            },
            tooltip: {
                shared:true
            },
            series: [{
                name: 'Baseline',
                data: numExe.base.slice(0, $scope.slider.value)
            },
            {
                name: 'Comparative',
                data: numExe.compare.slice(0, $scope.slider.value)
            }]
        });
    }

长话短说,变量在 html 中更改,但在控制器中不会更改。任何帮助将非常感谢。

我不认为Highcharts会监控其数据的变化,因此它不会检测到系列数据的更改(请参阅此处的文档)。此外,传入图形的序列数据是静态的,因此在滑块更改后不会更新。您需要创建一个局部序列变量来保存序列数据,并在滑块更改时更新序列数据。我不确定 numExe 是什么,所以我不能说数据是如何生成的,但 Series 对象具有 setData() 方法(带有重绘参数)应该可以解决问题。