AngularJS使用索引监视对象数组

时间:2014-05-13 10:18:56

标签: javascript angularjs highcharts

我在一个对象数组中有一个关于Angular监视的问题。

我有一个数组$ scope.chartSeries,对象如下:

[{"location": {values}, "id":"serie-1", "meter":{values}, "name": "seriename", "data":[{1,2,4,5,7,4,6}]}]

这用于绘制带有highcharts的折线图。

我想观看这个数组,如果值发生变化,我想知道索引和正在更改的值。

我找到了几种手表选项,但它们似乎都不适合我的情况。你能救我一下吗?

2 个答案:

答案 0 :(得分:7)

如果您在ng-repeat中渲染和更改数组,则可以使用ng-change指令并传入$index参数。

例如:

<div ng-repeat="item in array">
   <input type="text" ng-model="item.location" ng-change="changeValue($index)"/>
</div>

或者您可以使用$watch并使用newValueoldValue参数

$scope.$watch('array', function (newValue, oldValue) {
   for(var i = 0; i < newValue.length; i++) {
      if(newValue[i].location != oldValue[i].location)
        var indexOfChangedItem = i;
        //bla-bla-bla
   }
}, true);

答案 1 :(得分:1)

您可以使用$ watchGroup(watchExpressions,listener)。

例如:

$scope.chartSeries = [{"location": {values}, "id":"serie-1", "meter":{values}, "name": "seriename", "data":[{1,2,4,5,7,4,6}]}];

$scope.$watchCollection('chartSeries ', randomFunction(var) {
//code
});

或者您可以使用监视数组中的各个值来了解哪些值已更改。