TyperError: Cannot read property 'length' of undefined
TyperError: Cannot read property 'length' of undefined
我们的团队正在使用 angularjs 开发 ServiceNow 小部件,我们在控制台中看到 "TyperError: Cannot read property 'length' of undefined":
当我们点击 "at eval" 时,它会将我们带到这段突出显示第 321 行的特定代码片段:
我们似乎无法找出导致该错误的原因。我们在数组 ($scope.data.list) 上使用 $watch 并且读到 $watchCollection 可能更好,但我们没有改变地尝试过。有什么想法可能导致此错误以及如何消除它吗?
根据您发布的代码,您尚未定义或声明
$scope.data.list
(我假设 $scope.data
在某处定义)。到
解决这个问题,你至少需要先声明你的 $scope.data.list
来监视它。
来到$watch
部分,这取决于你的要求是什么。
$scope.$watchCollection
查找数组和元素中所做的更改,而,
$scope.$watch
将仅在数组完全为空时查找所做的更改
分配给不同的。不然想看深的话可以
使用 $scope.$watch
和作为第三个传递的布尔值 true
变量
对它的争论。
请参阅此 link 以获取完整文档 - https://www.sitepoint.com/mastering-watch-angularjs/
据我所知 $watch
在 $scope.data.list
上每当此集合中的任何值更改时调用
因此,通过查看错误,$scope.data.list
list
似乎不再存在于 $scope.data
中。尝试找出 $scope.data
将要更改的位置。
并使用以下语法监视集合
$scope.$watchCollection('names', function(newList,oldList) {
if(newList && newList.length) {
$scope.data.list = newList.length;
}
});
我们的团队正在使用 angularjs 开发 ServiceNow 小部件,我们在控制台中看到 "TyperError: Cannot read property 'length' of undefined":
当我们点击 "at eval" 时,它会将我们带到这段突出显示第 321 行的特定代码片段:
我们似乎无法找出导致该错误的原因。我们在数组 ($scope.data.list) 上使用 $watch 并且读到 $watchCollection 可能更好,但我们没有改变地尝试过。有什么想法可能导致此错误以及如何消除它吗?
根据您发布的代码,您尚未定义或声明
$scope.data.list
(我假设 $scope.data
在某处定义)。到
解决这个问题,你至少需要先声明你的 $scope.data.list
来监视它。
来到$watch
部分,这取决于你的要求是什么。
$scope.$watchCollection
查找数组和元素中所做的更改,而,
$scope.$watch
将仅在数组完全为空时查找所做的更改
分配给不同的。不然想看深的话可以
使用 $scope.$watch
和作为第三个传递的布尔值 true
变量
对它的争论。
请参阅此 link 以获取完整文档 - https://www.sitepoint.com/mastering-watch-angularjs/
据我所知 $watch
在 $scope.data.list
上每当此集合中的任何值更改时调用
因此,通过查看错误,$scope.data.list
list
似乎不再存在于 $scope.data
中。尝试找出 $scope.data
将要更改的位置。
并使用以下语法监视集合
$scope.$watchCollection('names', function(newList,oldList) {
if(newList && newList.length) {
$scope.data.list = newList.length;
}
});