使用带过滤器的 ng-repeat angular 排除空白值

using ng-repeat angular with filter to exclude blank value

我正在尝试使用 filter 在我的 select 中获取非空白元素,但这无法正常工作。

<select ng-model="selectedSubject.id">
    <option value="0">
        <%= res.getString("portlet.form.subjectField.default")  %>
    </option>  
    <option ng-repeat="sujet in subjects.allSubjects | filter:{name_fr:'!!'}" value="{{sujet.id}}">
        {{sujet.name_fr}}
    </option>
</select>

您必须设置模型,以便 angular select 是基于 select ngModel

的正确选项
<select ng-model="selectedSubject.id" ng-options="sujet.id as sujet.name_fr in subjects.allSubjects track by sujet.id"></select>

并在控制器上设置默认ID。

$scope.allSubjects = subjects;
$scope.selectedSubject.id = subjects[0].id;

filter:{my_field:'!!'} 将仅过滤掉 null 个值。

如果您想过滤掉空值,或者同时过滤掉 null 和空值,您应该使用自定义过滤器

<option ng-repeat="sujet in subjects.allSubjects | filter:notEmptyOrNull" value="{{sujet.id}}">{{sujet.name_fr}}</option>

控制器

$scope.notEmptyOrNull = function(item){
  return !(item.name_fr === null || item.name_fr.trim().length === 0)
}

您使用的过滤器将只过滤包含空值而非空白的数据。

要过滤掉空白数据,您必须创建 filter.This 关于堆栈溢出的问题已得到解答。访问这个 link。

Angular - Filter to remove blank strings from array