我正在尝试过滤For Each prop In Selection.ShapeRange(1).Properties
Debug.Print prop.Name
Next
,但是此表中有许多空值,我该如何忽略这些空字段并仅从不为空的文件中搜索/过滤
instructor_name
并且因为有很多字段为空,所以我收到了错误
TypeError:无法读取null的属性“ instructor_name”
filter:
`item.instructor_name.toLowerCase().indexOf($scope.courses_search.toLowerCase()) != -1`
答案 0 :(得分:0)
您正在将item与null进行比较,但是如果item未定义,则会进行下一次验证,因为(undefined!== null),因此它将尝试在undefined上查找教师名称,这显然行不通。
AngularJS拥有自己的检查器,angular.isDefined()和angular.isUndefined()。您可以使用其中之一,也可以进行稍微不同的检查,例如:
if (item && item.instructor_name) ...
如果您使用lodash,则可以执行以下操作: 如果(_.get(item,'instructor_name'))...
答案 1 :(得分:-1)
一种选择是在控制器上添加过滤器并从那里处理空检查。 请记住在应用toLowerCase()方法之前检查该值是否已定义。
$scope.filterFunc = function() {
return function(item) {
if (typeof $scope.courses_search !== 'undefined' && item !== null) {
if(typeof item.subject_cd !== 'undefined'){
return item.subject_cd.toLowerCase().indexOf($scope.courses_search.toLowerCase()) != -1;
}
if(typeof item.acad_group !== 'undefined'){
return item.acad_group.toLowerCase().indexOf($scope.courses_search.toLowerCase()) != -1;
}
}
return false;
};
};
然后查看
ng-repeat="item in items | filter:filterFunc"