我在一个对象数组中有一个关于Angular监视的问题。
我有一个数组$ scope.chartSeries,对象如下:
[{"location": {values}, "id":"serie-1", "meter":{values}, "name": "seriename", "data":[{1,2,4,5,7,4,6}]}]
这用于绘制带有highcharts的折线图。
我想观看这个数组,如果值发生变化,我想知道索引和正在更改的值。
我找到了几种手表选项,但它们似乎都不适合我的情况。你能救我一下吗?
答案 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
并使用newValue
,oldValue
参数
$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
});
或者您可以使用监视数组中的各个值来了解哪些值已更改。