我有这个计算
if (typeof $scope.memoryTable[name][category]['total'] !== 'undefined') {
$scope.memoryTable[name][category]['total'] = $scope.memoryTable[name][category]['total'];
}
else {
$scope.memoryTable[name][category]['total'] = 0;
}
这看起来很正常,显然没有错误。
但是,如果我试图对该属性进行简单的计算,即
if (typeof $scope.memoryTable[name][category]['total'] !== 'undefined') {
// add 10
$scope.memoryTable[name][category]['total'] = $scope.memoryTable[name][category]['total'] + 10;
}
else {
$scope.memoryTable[name][category]['total'] = 0;
}
然后AngularJS引发了一堆我不知道它们意味着的错误(见截图)
此外,尽管有错误,它仍会进行计算但值不正确(会返回几千个)
这可能是什么问题?我认为这可能与摘要周期有关。
答案 0 :(得分:0)
使用$ log API检查total属性的数据类型,并继续检查其他属性,如下所示:
if ($scope.memoryTable &&
$scope.memoryTable[name] &&
$scope.memoryTable[name][category] &&
$scope.memoryTable[name][category]['total'] &&
typeof $scope.memoryTable[name][category]['total'] !== 'undefined') {
// check the type of total
$log.log("type of the total" + typeof $scope.memoryTable[name][category]['total']);
// add 10
$scope.memoryTable[name][category]['total'] += 10;
}
else {
$scope.memoryTable[name][category]['total'] = 0;
}
// Check the value
$log.log("value of the total" + $scope.memoryTable[name][category]['total']);
答案 1 :(得分:0)
看起来$ scope.memoryTable或... ['总计']在$ watch某处。因此,在$ digest循环之间,您再次尝试修改它。
var total = $ scope.memoryTable [name] [category] [' total'];
if(typeof total!==' undefined'){
total += 10;
}其他{
total = 0;
}
$ scope.memoryTable [name] [category] [' total'] = total;