我有一个通过 via 迭代的二维数组ng-repeat
。这个数组实际上是我正在构建的电子表格应用程序的一部分,其中电子表格中的初始值是数组的初始值。我编写了一个函数,可以在用户更改输入值时更新这个数组,但是,我被告知我需要使用$watch
方法而不是onchange
方法。
我真的很生气,因为我不明白如何通过该$watch
方法更改初始数组的值。我看到它检测到更改,但我希望它跟踪该更改并实际更改初始数组。
这是我的 Javascript,包括$watch
方法的开头:
sheet= function($scope, $parse){
$scope.columns = headers;
$scope.rows = allData.length;
$scope.cells = {};
$scope.$watch(
function() {console.log("Change!");},
);
$scope.values = allData.map(function(c,row){
return c.map(function(data){
return {
content: data,
model: null,
color: makeColors(data)
};
});
});
};
changeData = function(row, col, data){
allData[row][col] = data;
};
我的 HTML:
<div ng-app ng-controller="sheet">
<table>
<tr class="column-label">
<td ng-repeat="column in columns">{{column}}</td>
<tr ng-repeat="value in values">
<td class="row-label" ng-repeat="data in value">
<div>
<input type="text" id="inputValue" ng-model="data.content" class="{{data.color}}" onchange="changeData({{$parent.$index}},{{$index}},this.value)">
</div>
</td>
</tr>
</table>
</div>
如您所见,我使用$parent.$index
and$index
值调用 changeData 函数,它允许我访问和更改初始数组。我不确定如何通过$watch
.