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

Two-way binding is not recognising variable change in AngularJS

我有一个滑块,用于像这样更改控制器中的值

索引:

            <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 不会监视其数据的变化,因此它不会检测到您的系列数据的变化(请参阅 docs here). Additionally the series data passed in to the graph is static, so it won't update after the slider changes. You'll need to create a local Series 变量来保存系列数据,并在滑块时更新系列数据更改。我不确定 numExe 是什么,所以我不能说数据是如何生成的,但是 Series 对象有 setData() 方法(带有重绘参数)应该可以解决问题。