所以我有一个动态表,我需要跟踪几个属性。我使用angularJS来执行此操作,并使用2D数组对象来跟踪表格的元素。
我的代码如下所示:
$scope.table = [];
$scope.generateTable = function(){
var table = [[], []];
for (var i = 0; i < $scope.height; i++) {
$scope.table[i] = []
for (var j = 0; j < $scope.width; j++) {
$scope.table[i].push({
display: 'X',
alive: false
});
}
}
}
$scope.changeProp = function(x, y){
$scope.table[x][y].alive = !$scope.table[x][y].alive;
$scope.table[x][y].alive ? $scope.table[x][y].display = 'O' : $scope.table[x][y].display = 'X';
}
但是它说'不能读取未定义的属性&#39;每当我尝试运行changeProp()函数时。元素存在于数组中并且正确显示在前端,为什么我不能使用语法arr [] []更改函数中的元素?
编辑:进一步审核后,问题似乎是宽度未正确传递给changeProp。这是前端代码:
<tr ng-repeat="x in table">
<td ng-repeat="y in x track by $index" align="center" ng-click="changeProp($parent.index, $index)">
{{ y.display }}
</td>
</tr>
答案 0 :(得分:1)
你以错误的方式传递了父索引。
将$ parent.index编辑为$ parent。$ index。
<tr ng-repeat="x in table">
<td ng-repeat="y in x track by $index" align="center" ng-click="changeProp($parent.$index, $index)">
{{ y.display }}
</td>
</tr>
答案 1 :(得分:1)
请尝试如下:
edit your profile
IN UI:
$scope.table = [{},{}];
$scope.generateTable = function(){
var table = [{}, {}];
for (var i = 0; i < $scope.height; i++) {
$scope.table[i] = {};
for (var j = 0; j < $scope.width; j++) {
$scope.table[i].push({
display: 'X',
alive: false
});
}
}
}
$scope.changeProp = function(x, y){
x =parseInt(x);
y= parseInt(y);
$scope.table[x][y]['alive'] = !$scope.table[x][y]['alive'];
$scope.table[x][y]['alive'] ? $scope.table[x][y]['display'] = 'O' : $scope.table[x][y]['display'] = 'X';
}
答案 2 :(得分:0)
我已经解决了这个问题。
我需要将一个变量初始化为ng-repeat的索引。
示例:
Sub WorksheetLoop()
Dim c As Integer
Dim n As Integer
c = ActiveWorkbook.Worksheets.Count
For n = 1 To c Step 1
Last = Worksheets(n).Cells(Rows.Count, "A").End(xlUp).Row
For i = Last To 1 Step -1
If (Worksheets(n).Cells(i, "A").Value) = "Oakville" Then
Worksheets(n).Cells(i, "A").EntireRow.Delete
End If
Next i
Next n
End Sub